คำถามติดแท็ก cryptographic-hash-function


13
ฉันจะแฮรหัสผ่านใน Java ได้อย่างไร
ฉันต้องแฮรหัสผ่านสำหรับการจัดเก็บในฐานข้อมูล ฉันจะทำสิ่งนี้ใน Java ได้อย่างไร ฉันหวังว่าจะใช้รหัสผ่านแบบข้อความธรรมดาเพิ่มเกลือแบบสุ่มจากนั้นเก็บเกลือและรหัสผ่านที่ถูกแฮชไว้ในฐานข้อมูล จากนั้นเมื่อผู้ใช้ที่ต้องการเข้าสู่ระบบฉันสามารถใช้รหัสผ่านที่ส่งเพิ่มเกลือแบบสุ่มจากข้อมูลบัญชีของพวกเขาแฮชมันและดูว่ามันเท่ากับรหัสผ่านแฮชที่เก็บไว้กับข้อมูลบัญชีของพวกเขา

9
ฉันควรเลือกฟังก์ชันแฮชการเข้ารหัสลับแบบใด
กรอบงาน. NET มาพร้อมกับอัลกอริทึมการแฮช 6 แบบ: MD5: 16 ไบต์ (เวลาที่แฮช 500MB: 1462 ms) SHA-1: 20 ไบต์ (1644 มิลลิวินาที) SHA256: 32 ไบต์ (5618 ms) SHA384: 48 ไบต์ (3839 มิลลิวินาที) SHA512: 64 ไบต์ (3820 มิลลิวินาที) RIPEMD: 20 ไบต์ (7066 ms) แต่ละฟังก์ชันเหล่านี้ทำงานแตกต่างกัน MD5 นั้นเร็วที่สุดและ RIPEMD นั้นช้าที่สุด MD5 มีข้อได้เปรียบที่เหมาะกับ Guid ประเภทในตัว; และมันก็เป็นพื้นฐานของประเภท 3 UUID แฮช …


8
MD5 คือ 128 บิต แต่ทำไมถึงเป็น 32 ตัวอักษร?
ฉันอ่านเอกสารเกี่ยวกับ md5 มันบอกว่ามัน 128 บิต แต่ทำไมถึงเป็น 32 ตัวอักษร? ฉันคำนวณอักขระไม่ได้ 1 ไบต์คือ 8 บิต ถ้า 1 อักขระคือ 1 ไบต์ แล้ว 128 บิตคือ 128/8 = 16 ไบต์ใช่ไหม แก้ไข: SHA-1 สร้าง 160 บิตมีอักขระกี่ตัว?

16
ทำไมค่าแฮช MD5 จึงไม่สามารถย้อนกลับได้?
แนวคิดหนึ่งที่ฉันสงสัยมาตลอดคือการใช้ฟังก์ชันแฮชและค่าที่เข้ารหัสลับ ฉันเข้าใจว่าฟังก์ชันเหล่านี้สามารถสร้างค่าแฮชที่ไม่เหมือนใครและแทบไม่สามารถย้อนกลับได้ แต่นี่คือสิ่งที่ฉันสงสัยมาตลอด: หากบนเซิร์ฟเวอร์ของฉันใน PHP ฉันสร้าง: md5("stackoverflow.com") = "d0cc85b26f2ceb8714b978e07def4f6e" เมื่อคุณเรียกใช้สตริงเดียวกันผ่านฟังก์ชัน MD5 คุณจะได้ผลลัพธ์เดียวกันกับการติดตั้ง PHP ของคุณ มีการใช้กระบวนการเพื่อสร้างมูลค่าจากค่าเริ่มต้นบางส่วน นี่ไม่ได้หมายความว่ามีวิธีแยกโครงสร้างสิ่งที่เกิดขึ้นและย้อนกลับค่าแฮชหรือไม่? มันเกี่ยวกับฟังก์ชันเหล่านี้ที่ทำให้สตริงผลลัพธ์ไม่สามารถย้อนกลับได้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.