تختلف نتائج تشفير العديد من ASP SHA1 (كتبها VBS) التي وجدت على Baidu عن تشفير ASP.NET SHA1. بعد تشفير ASP.NET SHA1 هو 40 بت ، فإن تشفير ASP SHA1 الموجود على الإنترنت هو 64 بت. اعتقدت أن ASP.NET قد تم اعتراضه (على سبيل المثال ، فإن عدد أسرار MD5 من ASP على الإنترنت يختلف عن ASP.NET ، وهي مشكلة في الاعتراض) ، لكن نتائج تشفير 64 بت من ASP لا تحتوي على نتائج 40 بت من ASP.NET. يبدو أن الإصدار الموجود يختلف عن خوارزمية التشفير لـ ASP.NET.
أخيرًا ، استخدمت Google للبحث في الجدار ووجدت إصدار JS من رمز تشفير SHA1 وجمعه مع ASP لاستخدام النتيجة هو بالضبط نفس تشفير SHA1 لـ ASP.NET. . يبدو أن النص الفني لا يزال غير جيد في Google. . فقط يمارس الجنس مع جدار الحماية في الصين. . جوجل حظره أيضا.
رمز المصدر لتشفير ASP SHA1 كما يلي ، وهو ما يتوافق مع نتيجة تشفير SHA1 لـ ASP.NET:
نسخة الكود كما يلي:
<script language = "javaScript" type = "text/javaScript" runat = "server">
/*
* تطبيق JavaScript لخوارزمية التجزئة الآمنة ، SHA-1 ، على النحو المحدد
* في FIPS PUB 180-1
* الإصدار 2.1A حقوق الطبع والنشر بول جونستون 2000 - 2002.
* المساهمون الآخرون: جريج هولت ، أندرو كيرت ، يدنار ، مفقود
* موزعة بموجب ترخيص BSD
* انظر http://pajhome.org.uk/crypt/md5 للحصول على التفاصيل.
*/
/*
* المتغيرات القابلة للتكوين. قد تحتاج إلى تعديلها لتكون متوافقة مع
* جانب الخادم ، لكن الإعدادات الافتراضية تعمل في معظم الحالات.
*/
var hexcase = 0 ؛ /* تنسيق الإخراج HEX. 0 - أحرف صغيرة ؛ 1 - الأحرف الكبيرة */
var b64pad = "=" ؛ /* BASE-64 PAD حرف. "=" للامتثال الصارم RFC */
var chrsz = 8 ؛ /* بت لكل حرف إدخال. 8 - ASCII ؛ 16 - يونيكود */
/*
* هذه هي الوظائف التي تريد الاتصال بها عادة
* يأخذون وسيطات سلسلة ويعودون إما hex أو سلاسل مشفرة hex أو base-64
*/
دالة hex_sha1 (s) {return binb2Hex (core_sha1 (str2binb (s) ، s.length * chrsz)) ؛}
الدالة b64_sha1 (s) {return binb2b64 (core_sha1 (str2binb (s) ، s.length * chrsz)) ؛}
الدالة str_sha1 (s) {return binb2str (core_sha1 (str2binb (s) ، s.length * chrsz)) ؛}
الدالة HEX_HMAC_SHA1 (المفتاح ، البيانات) {return binb2Hex (core_hmac_sha1 (مفتاح ، بيانات))) ؛}
الدالة B64_HMAC_SHA1 (المفتاح ، البيانات) {return binb2b64 (core_hmac_sha1 (مفتاح ، بيانات)) ؛}
الدالة str_hmac_sha1 (المفتاح ، البيانات) {return binb2str (core_hmac_sha1 (مفتاح ، بيانات)) ؛}
/*
* قم بإجراء اختبار ذاتي بسيط لمعرفة ما إذا كان VM يعمل
*/
دالة sha1_vm_test ()
{
إرجاع HEX_SHA1 ("ABC") == "A9993E364706816ABA3E25717850C26C9CD0D89D" ؛
}
/*
* احسب SHA-1 لمجموعة من الكلمات الكبيرة ، وطول قليلاً
*/
وظيفة core_sha1 (x ، لين)
{
/ * إلحاق حشوة */
x [len >> 5] | = 0x80 << (24 - Len ٪ 32) ؛
x [(len + 64 >> 9) << 4) + 15] = len ؛
var w = Array (80) ؛