Di ASP, kami telah menggunakan fungsi MD5 di ASP yang digunakan oleh Forum Rudong.com, dll. String yang dienkripsi oleh fungsi MD5 adalah sebagai berikut:
1165d25d8cd021d5
Dan di Asp.Net metode berikut:
Sistem.Web.Keamanan.FormsAuthentication.HashPasswordForStoringInConfigFile(kata sandi.Teks,"MD5")
Hasil enkripsi MD5 adalah:
12C403B91165D25D8CD021D5F9B5BB7F
Alasannya adalah fungsi MD5 di ASP menggunakan bit ke-9 hingga ke-25 dari Hashvalue MD5 32-bit dan kemudian mengubahnya menjadi huruf kecil sebagai ciphertext. Mengetahui hal ini, hasil ASP.NET dapat digunakan untuk membandingkan string kata sandi di database lama dengan sedikit pemrosesan.
Dalam fungsi MD5 ASP, baris 353 dan 354:
'MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
MD5=LCase(WordToHex(b) & WordToHex(c)) 'Saya memotong ini agar sesuai dengan kata sandi database 16byte :D
Kalimat pertama mengambil semua ciphertext 32-bit, dan kalimat kedua mengambil bit ke-9 sampai ke-25 di tengah sebagai ciphertext 16-bit.
Ketika datang ke vb.net, masalah muncul lagi. Di vb.net, namespace System.Web.Security tidak dapat digunakan, dan metode sederhana di atas tidak dapat digunakan untuk enkripsi MD5. Jadi saya menulis fungsi berikut untuk menanganinya:
VB.NET:
'Fungsi enkripsi MD5
Fungsi Bersama Publik MD5 (ByVal strSource Sebagai String, Kode ByVal Sebagai Int16) Sebagai String
'Teks asli dari kata sandi yang dikodekan ascii digunakan di sini. Jika Anda ingin menggunakan karakter Cina sebagai kata sandi, Anda dapat menggunakan UnicodeEncoding, tetapi itu tidak kompatibel dengan fungsi MD5 di ASP.
Redupkan dataToHash As Byte() = (Sistem Baru.Teks.ASCIIEncoding).GetBytes(strSource)
Redupkan nilai hash Sebagai Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Redupkan saya Sebagai Integer
Pilih Kode Kasus
Kasus 16 'Pilih hasil enkripsi karakter 16-bit
Untuk i = 4 Sampai 11
MD5 += Hex(nilai hash(i)).Ke Bawah
Berikutnya
Kasus 32 'Pilih hasil enkripsi karakter 32-bit
Untuk i = 0 Sampai 15
MD5 += Hex(nilai hash(i)).Ke Bawah
Berikutnya
Kasus Lain 'Jika Kode salah, kembalikan seluruh string, yaitu karakter 32-bit
Untuk i = 0 Ke nilai hash. Panjang - 1
MD5 += Hex(nilai hash(i)).Ke Bawah
Berikutnya
Pilihan Akhir
Fungsi Akhir
: BLOG AndyDavis