In ASP haben wir die MD5-Funktion in ASP verwendet, die vom Rudong.com-Forum usw. verwendet wird. Die von der MD5-Funktion verschlüsselte Zeichenfolge lautet wie folgt:
1165d25d8cd021d5
Und in Asp.Net die folgende Methode:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text,"MD5")
Das Ergebnis der MD5-Verschlüsselung ist:
12C403B91165D25D8CD021D5F9B5BB7F
Der Grund dafür ist, dass die MD5-Funktion in ASP das 9. bis 25. Bit des 32-Bit-MD5-Hashwerts verwendet und ihn dann als Chiffretext in Kleinbuchstaben umwandelt. Mit diesem Wissen können die ASP.NET-Ergebnisse mit etwas Verarbeitung zum Vergleich von Kennwortzeichenfolgen in älteren Datenbanken verwendet werden.
In der MD5-Funktion von ASP, Zeilen 353 und 354:
'MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
MD5=LCase(WordToHex(b) & WordToHex(c)) 'Ich schneide das so zu, dass es in ein 16-Byte-Datenbankpasswort passt :D
Der erste Satz besteht darin, den gesamten 32-Bit-Verschlüsselungstext zu verwenden, und der zweite Satz besteht darin, das 9. bis 25. Bit in der Mitte als 16-Bit-Verschlüsselungstext zu verwenden.
Bei vb.net tritt das Problem erneut auf. In vb.net kann der System.Web.Security-Namespace nicht verwendet werden, und die oben beschriebene einfache Methode kann nicht für die MD5-Verschlüsselung verwendet werden. Deshalb habe ich die folgende Funktion geschrieben, um damit umzugehen:
VB.NET:
'MD5-Verschlüsselungsfunktion
Öffentliche gemeinsame Funktion MD5(ByVal strSource As String, ByVal Code As Int16) As String
„Hier wird der Originaltext des ASCII-codierten Passworts verwendet. Wenn Sie chinesische Zeichen als Passwort verwenden möchten, können Sie UnicodeEncoding verwenden, es ist jedoch nicht mit der MD5-Funktion in ASP kompatibel.“
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Dim i als Ganzzahl
Wählen Sie Fallcode aus
Fall 16 „Wählen Sie das Verschlüsselungsergebnis von 16-Bit-Zeichen aus.“
Für i = 4 bis 11
MD5 += Hex(hashvalue(i)).ToLower
Nächste
Fall 32 „Wählen Sie das Verschlüsselungsergebnis von 32-Bit-Zeichen aus
Für i = 0 bis 15
MD5 += Hex(hashvalue(i)).ToLower
Nächste
Anderer Fall: „Wenn der Code falsch ist, wird die gesamte Zeichenfolge zurückgegeben, d. h. 32-Bit-Zeichen.“
Für i = 0 Zu hashvalue.Length - 1
MD5 += Hex(hashvalue(i)).ToLower
Nächste
Endauswahl
Endfunktion
Quelle: AndyDavis BLOG