ใน ASP เราได้ใช้ฟังก์ชัน MD5 ใน ASP ที่ใช้โดย Rudong.com Forum ฯลฯ สตริงที่เข้ารหัสโดยฟังก์ชัน MD5 มีดังนี้:
1165d25d8cd021d5
และใน Asp.Net วิธีการต่อไปนี้:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile (รหัสผ่าน ข้อความ "MD5")
ผลลัพธ์ของการเข้ารหัส MD5 คือ:
12C403B91165D25D8CD021D5F9B5BB7F
เหตุผลก็คือ ฟังก์ชัน MD5 ใน ASP ใช้บิตที่ 9 ถึง 25 ของค่าแฮช MD5 แบบ 32 บิต จากนั้นจึงเปลี่ยนเป็นตัวพิมพ์เล็กเป็นไซเฟอร์เท็กซ์ เมื่อทราบสิ่งนี้ ผลลัพธ์ของ ASP.NET สามารถใช้เพื่อเปรียบเทียบสตริงรหัสผ่านในฐานข้อมูลเก่ากับการประมวลผลเพียงเล็กน้อย
ในฟังก์ชัน MD5 ของ ASP บรรทัดที่ 353 และ 354:
'MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
MD5=LCase(WordToHex(b) & WordToHex(c)) 'ฉันครอบตัดสิ่งนี้ให้พอดีกับรหัสผ่านฐานข้อมูล 16 ไบต์ :D
ประโยคแรกคือใช้ไซเฟอร์เท็กซ์แบบ 32 บิตทั้งหมด และประโยคที่สองคือใช้บิตที่ 9 ถึง 25 ที่อยู่ตรงกลางเป็นไซเฟอร์เท็กซ์ 16 บิต
เมื่อพูดถึง vb.net ปัญหาก็เกิดขึ้นอีกครั้ง ใน vb.net ไม่สามารถใช้เนมสเปซ System.Web.Security และวิธีการง่ายๆ ข้างต้นไม่สามารถใช้กับการเข้ารหัส MD5 ได้ ดังนั้นฉันจึงเขียนฟังก์ชันต่อไปนี้เพื่อจัดการ:
VB.NET:
'ฟังก์ชั่นการเข้ารหัส MD5
ฟังก์ชั่นที่ใช้ร่วมกันสาธารณะ MD5 (ByVal strSource As String, ByVal Code As Int16) As String
'ข้อความต้นฉบับของรหัสผ่านที่เข้ารหัส ASCII ถูกนำมาใช้ที่นี่ หากคุณต้องการใช้อักขระภาษาจีนเป็นรหัสผ่าน คุณสามารถใช้ UnicodeEncoding ได้ แต่จะเข้ากันไม่ได้กับฟังก์ชัน MD5 ใน ASP
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)
หรี่ฉันเป็นจำนวนเต็ม
เลือกรหัสกรณี
กรณีที่ 16 'เลือกผลการเข้ารหัสอักขระ 16 บิต
สำหรับ i = 4 ถึง 11
MD5 += Hex(ค่าแฮช(i)).ToLower
ต่อไป
กรณีที่ 32 'เลือกผลการเข้ารหัสอักขระ 32 บิต
สำหรับฉัน = 0 ถึง 15
MD5 += Hex(ค่าแฮช(i)).ToLower
ต่อไป
Case Else 'เมื่อโค้ดผิด ให้ส่งคืนสตริงทั้งหมด ซึ่งก็คืออักขระ 32 บิต
สำหรับ i = 0 ถึง hashvalue.Length - 1
MD5 += Hex(ค่าแฮช(i)).ToLower
ต่อไป
สิ้นสุดการเลือก
ของฟังก์ชันสิ้นสุด
: AndyDavis BLOG