У меня проблемы с хеш-значением строки SHA1.Я пытаюсь отправить файл с клиента, написанного на VB.net, на сервер, написанный на PHP.Моя проблема в том, что когда я передаю одну и ту же строку в VB.net и PHP, значение SHA1, вычисленное VB.net, полностью отличается от значения, вычисляемого PHP.
Например, я хочу кодировать строкув Base64, а затем вычислите хэш SHA1 строки Base64.Когда компьютер выполняет эту задачу из версии vb.net и из версии PHP, я получаю два разных значения SHA1, даже если очевидно, что строка в кодировке Base64 одинакова:
VB.net: 2E97A53B09C482A831540B532845BCAC79BFACCF PHP: 350A2080264E2724D4BCBC521C35264D264A1DAF
Я определенно что-то упускаю, не могли бы вы указать мне что-то в правильном направлении и сказать мне, что я делаю не так в этом случае?Вы очень
Вот код 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
А вот код 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