Tengo algunos problemas con el valor de hash SHA1 de una cadena. Estoy tratando de enviar un archivo de un cliente escrito en VB.net a un servidor escrito en PHP. Mi problema es que cuando paso la misma cadena a VB.net y PHP, el valor de SHA1 calculado por VB.net es completamente diferente del valor calculado por PHP.Misma cadena, diferentes valores de hash SHA1 obtenidos de VB.net y PHP
Por ejemplo, quiero codificar una cadena en Base64 y luego calcular el Hash SHA1 de la cadena Base64. Cuando el ordenador se ejecuta esta tarea desde la versión vb.net y desde la versión de PHP consigo dos valores SHA1 diferentes, aunque al parecer la cadena codificada en Base64 es el mismo:
VB.net: 2E97A53B09C482A831540B532845BCAC79BFACCF PHP: 350A2080264E2724D4BCBC521C35264D264A1DAF
Seguramente me falta algo, ¿podría señalarme en la dirección correcta y decirme qué estoy haciendo mal aquí?
muchas gracias
está aquí el Código VB.net:
Dim cInput As String
Dim cBase64 As String
Dim objSHA1 As New SHA1CryptoServiceProvider()
Dim abBytesToHash() As Byte
Dim cHash As String
cInput = "the quick brown fox jumps over the lazy dog"
cBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(cInput))
abBytesToHash = System.Text.Encoding.ASCII.GetBytes(cBase64)
abBytesToHash = objSHA1.ComputeHash(abBytesToHash)
cHash = BitConverter.ToString(objSHA1.ComputeHash(abBytesToHash))
cHash = Replace(cHash, "-", "")
MsgBox("BASE64: " + cBase64 + vbNewLine + "SHA1: " + cHash)
' Result is:
' BASE64: dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==
' SHA1: 2E97A53B09C482A831540B532845BCAC79BFACCF
Y aquí está el código PHP:
$cInput = "the quick brown fox jumps over the lazy dog";
$cBase64 = base64_encode($cInput);
echo("BASE64: " . $cBase64 . "<br />" . "SHA1: " . strtoupper(sha1($cBase64)));
// Result is:
// BASE64: dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==
// SHA1: 350A2080264E2724D4BCBC521C35264D264A1DAF
¿Cuál es la codificación de estas cadenas? –
Divertido que http://www.tools4noobs.com/online_php_functions/sha1/ da 16312751ef9307c3fd1afbcb993cdc80464ba0f1 –
@Captain: No, no, da '350a2080264e2724d4bcbc521c35264d264a1daf'. El texto no está siendo hash, la codificación base64 es (por qué, no tengo ni idea). – ircmaxell