Score:0

blueimp JavaScript-MD5 ทำงานอย่างไร

ธง mv

ฉันได้ดำเนินการบางอย่างเกี่ยวกับปัญหาหิมะถล่ม MD5 https://github.com/221294583/crc32 ว่ากันว่า CRC32 ตระหนักถึงหิมะถล่มผ่าน XOR แบบเรียกซ้ำของพหุนามและค่าดั้งเดิมในเวลาเดียวกัน ฉันคิดว่า MD5 เหมือนกัน แต่ฉันไม่เข้าใจรหัสของ MD5 คุณช่วยฉันอธิบายรหัสนี้ได้ไหม https://github.com/blueimp/JavaScript-MD5 มันเป็นรหัสจำนวนมากเช่นเดียวกับในลิงค์ของฉัน ฉันไม่ใช่ผู้พัฒนาโครงการ ฉันใช้โปรแกรมอรรถประโยชน์ MD5 สำหรับโครงการของฉัน และบางที JavaScript ก็เรียกโปรแกรมอรรถประโยชน์นี้ได้เช่นกัน CRC32 เป็นวิธีอื่น

DannyNiu avatar
vu flag
หมายเหตุด้านข้าง: MD5 ไม่มีการป้องกันความสมบูรณ์ของเกรดการเข้ารหัสและควรหลีกเลี่ยงแม้ว่าคุณจะยอมแลกความปลอดภัยกับประสิทธิภาพ BLAKE2s-128 ก็เป็นตัวเลือกที่ดีกว่าในแง่ของประสิทธิภาพ เว้นแต่ว่าคุณจะมีข้อกำหนดในการใช้ฮาร์ดแวร์ที่มีอยู่
Score:1
ธง vu

MD5 ทำงานแตกต่างจาก CRC โดยพื้นฐานแล้ว

ฉันไม่คุ้นเคยกับอัลกอริทึม CRC ยกเว้นเพียงรู้ว่ามีการป้องกันความสมบูรณ์ของปริมาณงานสูงขั้นพื้นฐาน

MD5 (พร้อมกับฟังก์ชันอื่นๆ ในตระกูลฟังก์ชันแฮชการเข้ารหัสของ Merkle-Daamgard เช่น SHA-1, SHA-256 เป็นต้น) มีเลเยอร์ประมาณ 4 เลเยอร์:

การก่อสร้าง Merkle-Daamgard: ซึ่งประกอบด้วย

  • ช่องว่างภายในข้อความที่เข้ากันได้กับ MD - เพื่อให้แน่ใจว่าข้อความที่มีความยาวต่างกันจะส่งผลให้บล็อกข้อความมีลำดับต่างกัน ข้อความที่แตกต่างกันที่มีความยาวเท่ากันไม่ใช่ประเด็นหลักสำหรับช่องว่างภายในที่เข้ากันได้กับ MD

  • ชุดของการวนซ้ำของฟังก์ชันการบีบอัด $C(h,m)$, ที่ไหน $h$ คือไดเจสต์จากการวนซ้ำครั้งก่อนของฟังก์ชันการบีบอัด (หรือเวกเตอร์การเริ่มต้นหากนี่คือการวนซ้ำเริ่มต้น) และ $m$ เป็นบล็อกข้อความสำหรับการวนซ้ำปัจจุบัน

การสร้างฟังก์ชันการบีบอัดจากบล็อกโค้ด

โครงสร้าง Davies-Meyers เป็นโครงสร้างที่ใช้ในตระกูล MD5, SHA-1 และ SHA-2 โดยจะเข้ารหัสไดเจสต์ด้วยบล็อกข้อความเป็นคีย์ จากนั้นเพิ่มหรือ xor ไดเจสต์ไปยังบล็อกเอาต์พุตใหม่เพื่อให้ฟังก์ชันการบีบอัด ทางเดียว.

การสร้างบล็อคซิเฟอร์

มี 2 ​​กระบวนทัศน์หลัก - a) Substitution-Permutation Network (SPN), b) Feistel Network ตระกูล MD5, SHA-1 และ SHA-2 ใช้อย่างหลัง

Feistal Network ปรับเปลี่ยนครึ่งหนึ่งของบล็อกรหัสลับซ้ำๆ ด้วยค่าที่คำนวณโดยใช้ฟังก์ชันแบบกลมจากอีกครึ่งหนึ่งของบล็อก - การคำนวณฟังก์ชันแบบกลมเกี่ยวข้องกับคีย์ย่อยที่ได้มาจากคีย์หลัก ซึ่งในกรณีของฟังก์ชันแฮชคือ บล็อกข้อความปัจจุบัน

การสร้างฟังก์ชันแบบกลม

ข้อกังวลหลักของ Feistal Network คือการเพิ่มความสับสนและการแพร่กระจายโดยการใช้ฟังก์ชัน Round ซ้ำๆ และฟังก์ชัน Round จำเป็นต้องจัดเตรียมการสุ่มขั้นต่ำที่จำเป็น

  • กระบวนทัศน์ ARX (การบวกเลขคณิต การหมุน/เลื่อน และการดำเนินการ xor) เป็นตัวเลือกยอดนิยม
  • พหุนามไบนารีเป็นอีกหนึ่ง
DannyNiu avatar
vu flag
ฉันค่อนข้างแน่ใจว่าฉันเคยเห็นคำตอบที่คล้ายกันมาก่อน ขอลิงค์หน่อยได้มั้ยคะ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา