ผลการเข้ารหัสของ ASP SHA1 หลายตัว (เขียนโดย VBS) ฉันพบใน Baidu นั้นแตกต่างจากการเข้ารหัส SHA1 ของ ASP.NET หลังจากการเข้ารหัสของ ASP.NET SHA1 คือ 40 บิตการเข้ารหัสของ ASP SHA1 ที่พบในอินเทอร์เน็ตคือ 64 บิต ฉันคิดว่า ASP.NET ได้สกัดกั้น (ตัวอย่างเช่นจำนวนความลับ MD5 ของ ASP บนอินเทอร์เน็ตนั้นแตกต่างจาก ASP.NET ซึ่งเป็นปัญหาของการสกัดกั้น) แต่ผลการเข้ารหัส 64 บิตของ ASP ไม่มีผล 40 บิตของ ASP.NET ดูเหมือนว่ารุ่นที่พบนั้นแตกต่างจากอัลกอริทึมการเข้ารหัสของ ASP.NET
ในที่สุดฉันใช้ Google เพื่อค้นหาผนังและพบรหัสการเข้ารหัส SHA1 เวอร์ชัน JS และรวมกับ ASP เพื่อใช้ผลลัพธ์นั้นเหมือนกับการเข้ารหัส SHA1 ของ ASP.NET - ดูเหมือนว่าข้อความทางเทคนิคยังไม่ดีที่ Google - แค่มีเพศสัมพันธ์ไฟร์วอลล์ในประเทศจีน - Google ยังบล็อกด้วย
ซอร์สโค้ดของการเข้ารหัส ASP SHA1 มีดังนี้ซึ่งสอดคล้องกับผลการเข้ารหัส SHA1 ของ ASP.NET:
การคัดลอกรหัสมีดังนี้:
<script language = "javascript" type = "text/javascript" runat = "เซิร์ฟเวอร์">
-
* การใช้งาน JavaScript ของอัลกอริทึม Hash Secure, SHA-1 ตามที่กำหนดไว้
* ใน FIPS PUB 180-1
* เวอร์ชัน 2.1A ลิขสิทธิ์ Paul Johnston 2000 - 2002
* ผู้มีส่วนร่วมอื่น ๆ : Greg Holt, Andrew Kepert, Ydnar, Lostinet
* แจกจ่ายภายใต้ใบอนุญาต 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 - Unicode */
-
* นี่คือฟังก์ชั่นที่คุณต้องการโทร
* พวกเขาใช้อาร์กิวเมนต์สตริงและส่งคืน hex หรือ base-64 strings encoded strings
-
ฟังก์ชั่น 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 (คีย์, ข้อมูล) {ส่งคืน binb2hex (core_hmac_sha1 (คีย์, ข้อมูล));}
ฟังก์ชั่น b64_hmac_sha1 (คีย์, ข้อมูล) {ส่งคืน binb2b64 (core_hmac_sha1 (คีย์, ข้อมูล));}
ฟังก์ชั่น str_hmac_sha1 (คีย์, ข้อมูล) {return binb2str (core_hmac_sha1 (คีย์, ข้อมูล));}
-
* ทำการทดสอบตัวเองอย่างง่ายเพื่อดูว่า VM ทำงานได้หรือไม่
-
ฟังก์ชั่น sha1_vm_test ()
-
return hex_sha1 ("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
-
-
* คำนวณ sha-1 ของอาเรย์ของคำใหญ่-เอดินและความยาวเล็กน้อย
-
ฟังก์ชั่น core_sha1 (x, len)
-
/ * ภาคผนวกช่องว่าง *//
x [len >> 5] | = 0x80 << (24 - LEN % 32);
x [((len + 64 >> 9) << 4) + 15] = len;
var w = อาร์เรย์ (80);