Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/10/2005, 04:57
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
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.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!