แฮชเหมือนกับการเข้ารหัสไหม?
ไม่ การเข้ารหัสสามารถถอดรหัสได้ด้วยคีย์ที่ถูกต้อง แฮชเป็นทิศทางเดียวและไม่สามารถย้อนกลับได้ "การถอดรหัสแฮช" เป็นสิ่งที่เป็นไปไม่ได้ในหลักการ
สร้าง hash MD5, SHA-1, SHA-256, SHA-512
ไม่สำหรับความปลอดภัย (รหัสผ่าน, การยืนยันตัวตน) แต่ยังใช้ได้สำหรับการค้นหาซ้ำและ cache key ที่ยอมรับ collision ได้
ไม่ การเข้ารหัสสามารถถอดรหัสได้ด้วยคีย์ที่ถูกต้อง แฮชเป็นทิศทางเดียวและไม่สามารถย้อนกลับได้ "การถอดรหัสแฮช" เป็นสิ่งที่เป็นไปไม่ได้ในหลักการ
ใช่ ฟังก์ชันแฮชเป็นแบบกำหนด (อินพุตเดียวกัน → เอาท์พุตเดียวกัน) ช่องว่างหรือตัวอักษรหนึ่งตัวทำให้แฮชเปลี่ยนไปอย่างสิ้นเชิง (avalanche effect)
ฟังก์ชันแฮชแปลงข้อมูลความยาวใดก็ได้เป็นสตริงความยาวคงที่ (digest) แบบทิศทางเดียว MD5(128 บิต), SHA-1(160 บิต), SHA-256(256 บิต), SHA-512(512 บิต) คือตัวอย่างอัลกอริทึม อินพุตเดียวกันให้เอาท์พุตเดียวกันเสมอ แต่ไม่สามารถย้อนกลับจากเอาท์พุตเพื่อหาอินพุตได้
MD5 และ SHA-1 ได้รับการพิสูจน์แล้วว่ามีช่องโหว่การโจมตีแบบ collision (อินพุตต่างกันแต่ได้แฮชเดียวกัน) จึงไม่แนะนำสำหรับความปลอดภัย SHA-256 และ SHA-512 ยังคงปลอดภัย อย่างไรก็ตาม การแฮชรหัสผ่านควรใช้ bcrypt หรือ Argon2 ที่ออกแบบมาให้ทำงานช้าโดยเจตนา
หลังดาวน์โหลด เปรียบเทียบ SHA-256 checksum กับค่าทางการเพื่อยืนยันว่าไฟล์ไม่ถูกดัดแปลง วิธีนี้พบบ่อยกับ ISO Linux และตัวติดตั้งซอฟต์แวร์ "Avalanche effect" หมายความว่าแม้แค่ 1 บิตเปลี่ยน แฮชก็จะเปลี่ยนอย่างสิ้นเชิง
SHA-256 เร็วเกินไป — นี่คือปัญหา GPU สมัยใหม่คำนวณแฮชได้หลายพันล้านครั้งต่อวินาที ทำให้การโจมตีแบบ brute-force กับรหัสผ่านทั่วไปง่ายมาก bcrypt และ Argon2 ถูกออกแบบโดยเจตนาให้ช้าและใช้หน่วยความจำมาก รวมถึงใช้ salt ทำให้รหัสผ่านเดียวกันได้แฮชต่างกัน
Proof-of-Work ของ Bitcoin กำหนดให้นักขุดหาค่า nonce ที่ทำให้ SHA-256 สองชั้นขึ้นต้นด้วยศูนย์จำนวนหนึ่ง แต่ละบล็อคมีแฮชของบล็อคก่อนหน้า หากแก้ไขธุรกรรมในอดีต แฮชของบล็อคทั้งหมดหลังจากนั้นจะเปลี่ยน ซึ่ง node ใดก็ตรวจพบได้ทันที