แฮช
สร้างแฮช SHA-1, SHA-256, SHA-384, SHA-512
MD5 ไม่ได้ให้บริการ — มันถูกทำลายทางคณิตศาสตร์และไม่สามารถใช้ได้ใน SubtleCrypto API ของเบราว์เซอร์ ใช้ SHA-256 หรือที่แข็งแกร่งกว่า
แฮชเชิงเข้ารหัสคืออะไร?
ฟังก์ชันแฮชเชิงเข้ารหัสจะเปลี่ยนข้อมูลใด ๆ — ตัวอักษรเดียว เอกสาร 5 หน้า — ให้เป็นสตริงความยาวคงที่ของตัวเลข Hex SHA-256 จะผลิตตัวอักษร Hex 64 ตัวเสมอ; SHA-512, 128 สองคุณสมบัติที่สำคัญ: ข้อมูลนำเข้าที่เหมือนกันจะผลิตแฮชเดียวกันเสมอ และมันเป็นไปไม่ได้ทางคอมพิวเตอร์ที่จะหาข้อมูลนำเข้าสองชุดที่แตกต่างกันซึ่งมีแฮชเดียวกัน (ความต้านทานการชนกัน)
แฮชถูกใช้สำหรับการตรวจสอบความสมบูรณ์ของไฟล์ (ดาวน์โหลดไฟล์? เปรียบเทียบ SHA-256 ของมันกับค่าที่เผยแพร่), การจัดเก็บรหัสผ่าน (เซิร์ฟเวอร์เก็บแฮช ไม่ใช่รหัสผ่าน), ลายเซ็น HMAC, และการจัดเก็บที่อิงเนื้อหา (Git ใช้ SHA-1 เพื่อระบุการเปลี่ยนแปลง)
กรณีการใช้งาน
- ตรวจสอบความสมบูรณ์ของการดาวน์โหลด — เปรียบเทียบ SHA-256 ของไฟล์ที่ดาวน์โหลดกับค่าที่ผู้เผยแพร่ระบุไว้
- ตรวจจับเนื้อหาซ้ำ — แฮชสตริงหรือเนื้อหาไฟล์เพื่อตรวจสอบเนื้อหาซ้ำโดยไม่ต้องเก็บต้นฉบับ
- สร้างคีย์แคช — เปลี่ยนข้อมูลนำเข้าที่ยาว (URLs, query strings, request bodies) ให้เป็นคีย์ความยาวคงที่สำหรับ Redis หรือ Memcached
- ตรวจสอบวัตถุ Git — คำนวณ SHA-1 เพื่อตรวจสอบที่อยู่ blob/tree object นอก Git plumbing
ตัวอย่าง
| ข้อมูลนำเข้า | ผลลัพธ์ |
|---|---|
| hello | SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
| (empty string) | SHA-256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
คำถามที่พบบ่อย
ทำไมไม่มี MD5?
MD5 ถูกทำลายทางคณิตศาสตร์ — การชนกันสามารถเกิดขึ้นได้ในไม่กี่วินาทีบนแล็ปท็อป API SubtleCrypto ของเบราว์เซอร์ไม่ได้เปิดเผยมันโดยตั้งใจ ใช้ SHA-256 หรือที่แข็งแกร่งกว่า
ฉันสามารถแฮชไฟล์ได้ไหม?
เครื่องมือนี้แฮชข้อมูลนำเข้าเป็นข้อความ หากต้องการแฮชไฟล์ ให้วางลงในคอนโซลของเบราว์เซอร์: `crypto.subtle.digest('SHA-256', await file.arrayBuffer())`.
แฮชมีความแน่นอนข้ามการทำงานหรือไม่?
ใช่ — SHA-256 ของ 'hello' จะมีค่าเดียวกันเสมอ ฟังก์ชันแฮชเป็นฟังก์ชันบริสุทธิ์ (ไม่มีเกลือ ไม่มีความสุ่ม) ตามการออกแบบ
ฉันควรใช้ SHA-1 หรือไม่?
หลีกเลี่ยงสำหรับแอปพลิเคชันใหม่ — มันถูกทำลายสำหรับการโจมตีการชนกัน SHA-1 ยังคงเป็นที่นิยมสำหรับการตรวจสอบความถูกต้องของไฟล์และ Git แต่ให้ใช้ SHA-256 สำหรับสิ่งที่เกี่ยวข้องกับความปลอดภัย
ข้อมูลนำเข้าส่งไปที่ไหนหรือไม่?
ไม่ การแฮชใช้ API การเข้ารหัสของเบราว์เซอร์โดยตรง; ไม่มีข้อมูลใด ๆ ออกจากอุปกรณ์ของคุณ
