Hola a todos. Estoy intentando crear una bibliteca de clases para poder utilizarla luego en ASP 3.0. Se trata de un componente que me permita cifrar en SHA1, ya que con ASP 3 no se puede, al menos que yo sepa.
Pues bien, creo un nuevo proyecto de Biblioteca de clases llamado "Cifrados". Añado una nueva clase y escribo el siguiente código:
Código:
Imports System.Security.Cryptography
Public Class CifSha1
Public Function Cifrar(ByVal Cadena As String) As String
Dim CadenaEnBytes As Byte()
Dim HashEnBytes As Byte() 'Resultado en Bytes
Dim HashCadena As String 'Resultado de HASH
Dim Sha1 As New SHA1CryptoServiceProvider
CadenaEnBytes = System.Text.Encoding.ASCII.GetBytes(Cadena)
HashEnBytes = Sha1.ComputeHash(CadenaEnBytes)
HashCadena = System.Text.Encoding.ASCII.GetString(HashEnBytes)
Return "SHA1: " & HashCadena
End Function
End Class
Lo compilo y en un proyecto web ASP.Net lo pruebo de la siguiente manera. Agrego la referencia a Cifrados.dll y escribo lo siguiente:
Código:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sha1 As New Cifrados.CifSha1
Response.Write(sha1.Cifrar("contraseñaParaSerCifrada"))
End Sub
El resultado de la página es:
Lo que no coincide con el cifrado, que debería ser:
Código:
SHA1: 47914D69E0FC735EDC76155944F1360167FB82C2
Supongo que será problema de la codificación, pero he probado con ASCII, UTF8, UTF7 y Default obteniendo cosas distintas pero nunca la correcta.
Un saludo.