แฮช SHA-1
คำนวณค่าแฮช SHA1 ออนไลน์ ป้อนข้อความรับผลลัพธ์ฐานสิบหก 40 ตัวอักษรทันที รองรับทั้งข้อความและไฟล์ ประมวลผลในเบราว์เซอร์ไม่รั่วไหลข้อมูล
คำแนะนำที่เกี่ยวข้อง
SHA-1 คืออะไร
SHA1 (Secure Hash Algorithm 1) เป็นฟังก์ชันแฮชเข้ารหัสที่ออกแบบโดยสำนักงานความมั่นคงแห่งชาติสหรัฐฯ (NSA) และเผยแพร่โดย NIST ในปี 1995 รับอินพุตความยาวตามอำเภอใจ สร้างเอาต์พุต 160 บิต (ฐานสิบหก 40 ตัวอักษร)
**การใช้งานทั่วไป:** ①ลายนิ้วมือคอมมิต Git/SVN (commit SHA); ②ตรวจสอบความสมบูรณ์ของไฟล์ (ความเข้ากันได้ในอดีต); ③แฮชสำหรับแจกจ่ายซอฟต์แวร์ (ถูกทดแทนด้วย SHA-256 ขึ้นไป); ④การจับมือ TLS 1.0/1.1 (เลิกใช้แล้ว)
**สถานะความปลอดภัย:** ในปี 2017 Google และ CWI Amsterdam ได้เปิดเผยการโจมตีด้วยการชนกัน SHA-1 ครั้งแรกในทางปฏิบัติ (SHAttered) ซึ่งหมายความว่า SHA-1 ไม่ได้ต้านทานการชนกันอีกต่อไป สถานการณ์สำคัญโปรดใช้ SHA-256 ขึ้นไป; สถานการณ์ที่ไม่เกี่ยวกับความปลอดภัย (ประวัติ Git ลายนิ้วมือไฟล์) ยังสามารถใช้ต่อได้
**เปรียบเทียบกับ MD5:** SHA1 มีความปลอดภัยมากกว่า MD5 (เอาต์พุตยาวกว่า) แต่ทั้งสองอัลกอริทึมไม่ต้านทานการชนกัน; MD5 ยังใช้ได้สำหรับลายนิ้วมือไฟล์/ขจัดข้อมูลซ้ำ ส่วน SHA1 ยังคงอยู่ในประวัติ Git ทั้งสองไม่ควรถูกใช้ต่อในสถานการณ์ความปลอดภัยใหม่
กรณีการใช้งาน
- ค้นหา Git commit hash
- ลายนิ้วมือเวอร์ชันโค้ด SVN
- ตรวจสอบ SHA1 สำหรับระบบเดิม (หลีกเลี่ยงการอัปเกรดย้ายระบบ)
- สาธิตแฮชเข้ารหัสในการเรียนการสอน/วิชาการ
- ตรวจสอบแฮชสำหรับซอฟต์แวร์เก่า (เผยแพร่ MD5/SHA1 แล้ว)
- ทดสอบความสอดคล้อง SHA1 ระหว่างไคลเอนต์/เซิร์ฟเวอร์
วิธีการใช้งาน
- ป้อนหรือวางเนื้อหาที่ต้องการคำนวณในกล่องข้อความ
- ระบบจะคำนวณ SHA1 โดยอัตโนมัติและแสดงผลลัพธ์ฐานสิบหก 40 ตัวอักษร
- ตัวเลือกเพิ่มเติม: ลากและวางไฟล์เพื่อคำนวณ SHA1 ไฟล์
- คลิกปุ่มคัดลอกเพื่อรับค่าแฮช
คุณสมบัติ
- SHA1 ข้อความ: คำนวณแบบเรียลไทม์ (มิลลิวินาที)
- SHA1 ไฟล์: คำนวณแบบแบ่งส่วนรองรับไฟล์ขนาดใหญ่
- ประมวลผลในเบราว์เซอร์: เนื้อหาไม่อัปโหลดไปยังเซิร์ฟเวอร์
- คัดลอกคลิกเดียว: คัดลอกค่าแฮชไปยังคลิปบอร์ด
- รองรับอักษรไทย อีโมจิ และอักขระหลายภาษา
- เปรียบเทียบค่าแฮช SHA1 สองค่าได้ (ไม่คำนึงตัวพิมพ์เล็ก-ใหญ่)
คำถามที่พบบ่อย
SHA1 ปลอดภัยหรือไม่ ยังสามารถใช้ได้หรือไม่
สถานการณ์ที่อ่อนไหวต่อความปลอดภัยโปรดใช้ SHA-256/SHA-512 ขึ้นไป SHA-1 ถูก Google เปิดเผยการโจมตีด้วยการชนกันในปี 2017 (SHAttered) แต่: ①ความเข้ากันได้กับประวัติ Git; ②ตรวจสอบซอฟต์แวร์เก่า; ③ลายนิ้วมือไฟล์ที่ไม่สำคัญ — สถานการณ์เหล่านี้ยังสามารถใช้ต่อได้
SHA1 มีความยาวเอาต์พุตเท่าใด
SHA1 สร้างเอาต์พุต 160 บิต แสดงด้วยฐานสิบหกเป็น 40 ตัวอักษร (ทุก 4 บิตสอดคล้องกับ 1 ตัวอักษร hex) ตัวอย่าง: a1b2c3d4e5f6... รวม 40 ตัวอักษร
SHA1 กับ MD5 ไหนดีกว่ากัน
ทั้งสองไม่เหมาะสำหรับสถานการณ์ความปลอดภัยใหม่ SHA1 มีความปลอดภัยดีกว่า MD5 เล็กน้อย (เอาต์พุตยาวกว่า) แต่ในทางปฏิบัติ: ①ลายนิ้วมือไฟล์/ขจัดข้อมูลซ้ำใช้ MD5 (เร็วกว่า); ②ความเข้ากันได้กับ Git ใช้ SHA1; ③สถานการณ์ความปลอดภัยใช้ SHA256 ขึ้นไป
SHA1 คำนึงตัวพิมพ์เล็ก-ใหญ่หรือไม่
คำนึง ข้อความต้นฉบับกับข้อความตัวพิมพ์ใหญ่ทั้งหมดจะให้ SHA1 ต่างกันอย่างสิ้นเชิง แต่สตริงค่าแฮชเองสามารถแสดงผลเป็นตัวพิมพ์เล็กหรือใหญ่ได้ (Linux นิยมตัวพิมพ์เล็ก Windows นิยมตัวพิมพ์ใหญ่) เมื่อเปรียบเทียบให้เปรียบเทียบเฉพาะตัวอักษรโดยไม่คำนึงตัวพิมพ์
สามารถคำนวณ SHA1 ของไฟล์ได้หรือไม่
ได้ คลิกปุ่ม「อัปโหลดไฟล์」หรือลากและวางไฟล์ลงบนหน้า ระบบจะคำนวณ SHA1 ไฟล์แบบแบ่งส่วน เหมาะสำหรับไฟล์ขนาดใหญ่ไม่ค้าง
SHA1 เป็นอัลกอริทึมเข้ารหัสหรือไม่
ไม่ใช่ SHA1 เป็นฟังก์ชันแฮชทางเดียว ตามทฤษฎีไม่สามารถย้อนกลับจากค่าแฮชเพื่อหาข้อความต้นฉบับได้ 「SHA1 เข้ารหัส」เป็นคำพูดทั่วไปที่ไม่เป็นทางการ นี่ไม่ใช่สำหรับเข้ารหัส เป็นเพียงการคำนวณแฮชเท่านั้น
เหตุใด Git จึงยังคงใช้ SHA1
แม้ว่า SHA1 เองจะไม่ต้านทานการชนกัน แต่โครงสร้าง SHA1 ต้านทานการชนกันที่ Git ใช้ถูกออกแบบโดย Linus Torvalds เป็นพิเศษ — แม้จะสามารถสร้างการชนกันดั้งเดิมได้ แต่ก็ไม่สามารถสร้างการชนกัน Git commit ที่มีคำนำหน้าเดียวกันได้ ดังนั้น Git ปัจจุบันยังคงปลอดภัย
เนื้อหาที่อัปโหลดจะถูกส่งไปยังเซิร์ฟเวอร์หรือไม่
นี่ใช้ Web Crypto API คำนวณภายในเบราว์เซอร์ เนื้อหาไม่อัปโหลดไปยังเซิร์ฟเวอร์ ประมวลผลในเครื่องเพื่อปกป้องความเป็นส่วนตัว เหมาะสำหรับสถานการณ์ที่อ่อนไหว
การแก้ไขปัญหา
เอาต์พุต SHA1 ไม่สอดคล้องกับที่แสดงในที่อื่น
โปรดตรวจสอบ: 1) ป้อนข้อความเหมือนกันทุกประการ (รวมช่องว่าง การขึ้นบรรทัด อักขระที่มองไม่เห็น); 2) ข้อความต้นฉบับถูกตัดช่องว่างอัตโนมัติหรือไม่ (แนะนำให้ทำเครื่องหมาย「รวมการขึ้นบรรทัด」); 3) วิธีการเข้ารหัสสอดคล้องกันหรือไม่ (UTF-8/GBK ฯลฯ)
เอาต์พุต SHA1 ไม่ใช่ 40 ตัวอักษร
SHA1 สร้างเอาต์พุตเสมอ 160 บิต = 40 ตัวอักษรฐานสิบหก หากเอาต์พุตยาว/สั้นกว่านั้น อาจแสดงผลด้วยการเข้ารหัส Base64 โปรดยืนยันว่าใช้การแสดงผลฐานสิบหก ไม่ใช่การเข้ารหัสอื่น
อภิธานศัพท์
- SHA1
- ฟังก์ชันแฮชเข้ารหัส 160 บิต มาตรฐานโดย NIST ใน FIPS 180-1 ไม่ต้านทานการชนกันแล้ว แต่ยังเป็นตัวเลือกทั่วไปสำหรับประวัติ Git และการตรวจสอบไฟล์
- แฮช (Hash)
- ฟังก์ชันทางคณิตศาสตร์ที่จับคู่อินพุตความยาวตามอำเภอใจกับเอาต์พุตความยาวคงที่ SHA1 สร้างผลลัพธ์ฐานสิบหก 40 ตัวอักษร
- การชนกัน (Collision)
- อินพุตที่แตกต่างกันสองอย่างสร้างค่าแฮชเดียวกัน ในปี 2017 Google เปิดเผยการโจมตี SHAttered พิสูจน์ว่า SHA1 สามารถสร้างการชนกันได้
- FIPS
- Federal Information Processing Standards มาตรฐานประมวลผลข้อมูลที่เผยแพร่โดย NIST สหรัฐฯ FIPS 180-1 เป็นมาตรฐาน SHA1
- การเข้ารหัสฐานสิบหก (Hex)
- ค่าแฮชมักแสดงด้วยเลขฐานสิบหก ทุก 4 บิตไบนารีสอดคล้องกับ 1 ตัวอักษรฐานสิบหก SHA1 สร้างไบนารี 160 บิต → 40 ตัวอักษรฐานสิบหก
- Git commit hash
- Git ใช้ SHA1 ระบุแต่ละคอมมิต แม้อัลกอริทึมเองจะถูกบุกรุก แต่ Git ยังคงใช้ SHA1 เนื่องจาก Linus Torvalds ออกแบบโครงสร้างต้านทานการชนกันสำหรับ SHA1 โดยเฉพาะ
เปรียบเทียบ SHA1 กับอัลกอริทึมแฮชอื่น
เปรียบเทียบความแตกต่างระหว่าง SHA1 กับ MD5/ตระกูล SHA-2
| อัลกอริทึม | เอาต์พุต | เผยแพร่ | ความปลอดภัย |
|---|---|---|---|
MD5 | 128 บิต / 32 ตัวอักษร | 1992 | อ่อนแอ (ถูกบุกรุก 2004) |
SHA-1 | 160 บิต / 40 ตัวอักษร | 1995 | อ่อนแอ (ถูกบุกรุก 2017) |
SHA-256 | 256 บิต / 64 ตัวอักษร | 2001 | แข็งแรง (แนะนำ) |
SHA-512 | 512 บิต / 128 ตัวอักษร | 2001 | แข็งแรงมาก |
ผลกระทบของความยาวอินพุตต่อความเร็ว SHA1
ความเร็วในการประมวลผล SHA1 แปรผันตรงกับปริมาณข้อมูลอินพุต
| ขนาดอินพุต | เวลาประมวลผลในเครื่อง | สถานการณ์ทั่วไป |
|---|---|---|
10 ตัวอักษร | < 1 ms | สตริงสั้น |
1 KB | < 1 ms | เอกสารข้อความสั้น |
100 KB | 1-2 ms | เอกสารขนาดกลาง |
10 MB | 30-60 ms | ไฟล์ PDF |
100 MB | 300-600 ms | ไฟล์วิดีโอ |
1 GB | 3-6 s | ไฟล์ขนาดใหญ่ |
5 สถานการณ์การใช้ SHA1 ทั่วไป
ครอบคลุมการพัฒนา การควบคุมเวอร์ชัน การปฏิบัติตามกฎระเบียบ ความปลอดภัย
| สถานการณ์การใช้งาน | ระดับความเสี่ยง | คุณค่าหลัก |
|---|---|---|
| Git commit hash | ต่ำ (มีการป้องกันการชนกันของ Git) | ความเข้ากันได้ทางประวัติ |
| ตรวจสอบ SHA1 ซอฟต์แวร์เก่า | ปานกลาง | เข้ากันได้กับระบบเดิม |
| สาธิตการเรียนการสอน | ไม่มี | ทำความเข้าใจหลักการแฮช |
| แฮชรหัสผ่าน | สูง (ไม่ควรใช้) | ควรเปลี่ยนเป็น bcrypt/Argon2 |
| ลายเซ็น API | สูง (ไม่ควรใช้) | ควรเปลี่ยนเป็น SHA256/HMAC-SHA256 |
Authoritative References
- NISTNIST FIPS 180-1 — มาตรฐาน SHA1
- Google / CWISHAttered — การชนกัน SHA1 ครั้งแรก
- MDNMDN — SubtleCrypto.digest
- วิกิพีเดียวิกิพีเดีย — SHA-1
- เปรียบเทียบข้อความอย่างปลอดภัย
- การแปลงเลขฐานสอง
- รหัสซีซาร์ (Caesar Cipher)
- ตัวแปลงรหัสมอร์ส
- เลขฐานสิบหก (Hex)
- วิดีโอเป็น Base64
- Base64 เป็นวิดีโอ
- แปลงรูปภาพเป็น Base64
- Base64 เป็นรูปภาพ
- แปลงข้อความเป็น Base64
- Base64 เป็นข้อความ
- ตัวตรวจสอบแฮชไฟล์
- แปลงไฟล์เป็น Base64
- Base64 เป็นไฟล์
- แปลงเสียงเป็น Base64
- Base64 เป็นเสียง
- เข้ารหัสและถอดรหัส AES
- เข้ารหัสและถอดรหัส DES
- ตัวเข้ารหัสและถอดรหัส Base32
- Base58 การเข้ารหัสและถอดรหัส
- การเข้ารหัส Base64
- ถอดรหัส Base64
- เปรียบเทียบ Base64
- แยก Base64
- รวม Base64 หลายบรรทัด
- การจัดรูปแบบ Base64
- ตรวจสอบรูปแบบ Base64
- เข้ารหัส Base64 แบบกลุ่ม
- ถอดรหัส Base64 หลายรายการ
- เครื่องมือล้าง Base64
- เครื่องมือจัดการ padding Base64
- สถิติความยาว Base64
- Base64 เป็น Hex
- ตัวแปลง Base64 DataURL
- ตัวแปลง Base64-Hex
- ตัวแปลงรหัส Base85
- สร้างและตรวจสอบ HMAC
- เครื่องมือสร้างคีย์ PBKDF2
- แฮช MD5
- แฮช SHA-256
- แฮช SHA-1
- แฮช SHA512
- ถอดรหัส ตรวจสอบ และสร้าง JWT
- เข้ารหัสและถอดรหัส HTML
- ตัวแปลงรหัส Unicode
- การเข้ารหัส URL
- URL Safe Base64
- MIME Base64
- ทำให้โค้ด Java อ่านยาก (Obfuscate)
- ทำให้โค้ด JS อ่านยาก (Obfuscate)
- ทำให้โค้ด PHP อ่านยาก (Obfuscate)
- ทำให้โค้ด Python อ่านยาก (Obfuscate)