แฮช

สร้างแฮช 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

ตัวอย่าง

ข้อมูลนำเข้าผลลัพธ์
helloSHA-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 การเข้ารหัสของเบราว์เซอร์โดยตรง; ไม่มีข้อมูลใด ๆ ออกจากอุปกรณ์ของคุณ