Tôi có một số vấn đề với giá trị băm SHA1 của một chuỗi. Tôi đang cố gắng để gửi một tập tin từ một khách hàng được viết bằng VB.net đến một máy chủ được viết bằng PHP. Vấn đề của tôi là khi tôi vượt qua cùng một chuỗi để VB.net và PHP, giá trị SHA1 tính bởi VB.net là hoàn toàn khác với giá trị tính toán bằng PHP.Cùng một chuỗi, giá trị băm SHA1 khác nhau thu được từ VB.net và PHP
Ví dụ: tôi muốn mã hóa chuỗi trong Base64 và sau đó tính giá trị Hash SHA1 của chuỗi Base64. Khi máy tính thực hiện nhiệm vụ này từ phiên bản vb.net và từ phiên bản PHP tôi nhận được hai giá trị SHA1 khác nhau, ngay cả khi có vẻ như chuỗi Base64 mã hóa là như nhau:
VB.net: 2E97A53B09C482A831540B532845BCAC79BFACCF PHP: 350A2080264E2724D4BCBC521C35264D264A1DAF
Tôi chắc chắn thiếu điều gì đó, bạn có thể chỉ cho tôi đúng hướng và cho tôi biết tôi đang làm gì sai ở đây không?
Thank you very much
Dưới đây là Bộ luật 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
Và đây là Bộ luật 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
mã hóa trên các chuỗi này là gì? –
Hài hước rằng http://www.tools4noobs.com/online_php_functions/sha1/ cho 16312751ef9307c3fd1afbcb993cdc80464ba0f1 –
@Captain: Không có, nó cung cấp cho '350a2080264e2724d4bcbc521c35264d264a1daf'. Các văn bản không được băm, mã hóa base64 của nó là (tại sao, tôi không có ý tưởng). – ircmaxell