في ASP، استخدمنا وظيفة MD5 في ASP التي يستخدمها منتدى Rudong.com، وما إلى ذلك. السلسلة المشفرة بواسطة وظيفة MD5 هي كما يلي:
1165d25d8cd021d5
وفي Asp.Net الطريقة التالية:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text،"MD5")
نتيجة تشفير MD5 هي:
12C403B91165D25D8CD021D5F9B5BB7F
السبب هو أن وظيفة MD5 في ASP تستخدم البتات من 9 إلى 25 من قيمة Hashvalue 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 كسلسلة، ByVal Code كـ Int16) كسلسلة
'يتم استخدام النص الأصلي لكلمة المرور المشفرة بـ ascii هنا. إذا كنت تريد استخدام الأحرف الصينية ككلمة مرور، فيمكنك استخدام UnicodeEncoding، ولكنه سيكون غير متوافق مع وظيفة MD5 في ASP.
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
قيمة التجزئة الخافتة As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")، System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
خافت ط كعدد صحيح
حدد رمز الحالة
الحالة 16 'حدد نتيجة التشفير لأحرف 16 بت
لأني = 4 إلى 11
MD5 += Hex(hashvalue(i)).ToLower
التالي
الحالة 32 'حدد نتيجة التشفير لأحرف 32 بت
لأني = 0 إلى 15
MD5 += Hex(hashvalue(i)).ToLower
التالي
حالة أخرى 'عندما يكون الرمز خاطئًا، قم بإرجاع السلسلة بأكملها، أي أحرف 32 بت
لأن i = 0 إلى قيمة التجزئة. الطول - 1
MD5 += Hex(hashvalue(i)).ToLower
التالي
إنهاء التحديد
الوظيفة النهائية
: مدونة AndyDavis