मुझे स्ट्रिंग के SHA1 हैश मान के साथ कुछ समस्याएं हैं। मैं PHP में लिखे गए सर्वर पर VB.net में लिखे गए क्लाइंट से एक फ़ाइल भेजने की कोशिश कर रहा हूं। मेरी समस्या यह है कि जब मैं VB.net और PHP पर एक ही स्ट्रिंग पास करता हूं, तो VB.net द्वारा गणना की गई SHA1 मान PHP द्वारा गणना की गई मान से पूरी तरह अलग होती है।वही स्ट्रिंग, VB.net से प्राप्त विभिन्न SHA1 हैश मान और PHP
उदाहरण के लिए, मैं बेस 64 में एक स्ट्रिंग को एन्कोड करना चाहता हूं और फिर बेस 64 स्ट्रिंग के SHA1 हैश की गणना करना चाहता हूं। कंप्यूटर vb.net संस्करण से और PHP संस्करण से इस कार्य को निष्पादित करता है जब मैं दो अलग अलग SHA1 मान प्राप्त है, भले ही जाहिरा तौर पर Base64 इनकोडिंग स्ट्रिंग में एक ही है:
VB.net: 2E97A53B09C482A831540B532845BCAC79BFACCF पीएचपी: 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
और यहाँ पीएचपी कोड है:
$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
इन तारों पर एन्कोडिंग क्या है? –
मजेदार है कि http://www.tools4noobs.com/online_php_functions/sha1/ देता है 16312751ef9307c3fd1afbcb993cdc80464ba0f1 –
@ कैप्टन: नहीं, ऐसा नहीं करता है, यह '350a2080264e2724d4bcbc521c35264d264a1daf' देता है। पाठ को धोया नहीं जा रहा है, इसका बेस 64 एन्कोडिंग है (क्यों, मुझे कोई जानकारी नहीं है)। – ircmaxell