Resuelto. El problema es que no pasaba los bytes a cadena correctamente, así que he optado por hacerlo uno por uno. La clase final quedaría así:
Código:
Imports System.Security.Cryptography
Public Class CifSha1
Public Function Cifrar(ByVal Cadena As String, ByVal Codificacion 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.GetEncoding(Codificacion).GetBytes(Cadena)
HashEnBytes = Sha1.ComputeHash(CadenaEnBytes)
Dim i As Integer
Dim sbSalida As New System.Text.StringBuilder(HashEnBytes.Length)
For i = 0 To HashEnBytes.Length - 1
sbSalida.Append(HashEnBytes(i).ToString("X2"))
Next
HashCadena = sbSalida.ToString()
Return HashCadena
End Function
End Class
Y para usarla:
Código:
Dim sha1 As New Cifrados.CifSha1
Response.Write("UTF-8: " & sha1.Cifrar("contraseñaParaSerCifrada", "UTF-8") & "<br>")
Response.Write("UTF-7: " & sha1.Cifrar("contraseñaParaSerCifrada", "UTF-7") & "<br>")
Response.Write("ASCII: " & sha1.Cifrar("contraseñaParaSerCifrada", "ASCII") & "<br>")
Espero que le sirva a alguien. Por cierto, ya que estamos, para usarla en ASP 3 además de registrar la dll en el servidor debería usar sólo esto ¿no?
Código:
Set sha1 = New Server.CreateObject("Cifrados.CifSha1")
Response.Write(sha1.Cifrar("contraseñaParaSerCifrada", "UTF-8"))
Un saludo.