เครื่องสร้างแฮช SHA1
SHA-1 สร้างค่าดิจสเต็ตขนาด 160 บิต (เทียบเท่ากับ 40 ตัวอักษรเฮกซาเดซิมอล) และเป็นแฮชที่ใช้ในการกำหนดรหัสประจำตัวของออบเจกต์ใน git ค่าเช็คซัมแบบเก่าของ SVN รวมถึงระบบการลงนามหลายระบบที่พัฒนาขึ้นก่อนปี 2017 เพียงนำข้อความใดๆ มาวางไว้ ก็จะได้ค่าแฮชที่แน่นอนอย่างสม่ำเสมอ อย่างไรก็ตาม ต้องเตือนไว้ตั้งแต่แรกว่า SHA-1 มีข้อจำกัดด้านความสามารถในการป้องกันการชนกันของค่าแฮช (SHAttered, 2017) และไม่ควรใช้สำหรับการสร้างลายเซ็นใหม่หรือการจัดเก็บรหัสผ่าน เหมาะเพียงสำหรับการตรวจสอบความถูกต้องของข้อมูลในสถานการณ์ที่ไม่มีเจตนาโจมตีเท่านั้น
วิธีการคำนวณแฮชของ SHA-1
-
1
วางข้อมูลที่คุณป้อนไว้
ข้อความใดๆ ก็ตาม, ไม่ว่าจะเป็นสตริง ไฟล์เต็มที่ถูกแปลงเป็นข้อความ หรือลำดับเลขฐานสิบหก
-
2
รูปแบบการเข้ารหัสคือ UTF-8
ข้อมูลขาเข้าจะถูกแปลงให้อยู่ในรูปแบบไบต์ UTF-8 ก่อนการแฮช ซึ่งสอดคล้องกับค่าเริ่มต้นของ OpenSSL, Python hashlib และ Node Crypto
-
3
วงจรเมอร์เคล-ดัมการ์ดดำเนินไป
ข้อความจะถูกเติมเต็มข้อมูล แบ่งออกเป็นบล็อกขนาด 512 บิต และนำไปประมวลผลผ่านฟังก์ชันการบีบอัด SHA-1 จำนวน 80 รอบต่อแต่ละบล็อก
-
4
คัดลอกผลการสรุปข้อมูลในรูปแบบเฮกซาเดซิม (hex digest) ที่มีความยาว 40 ตัวอักษร
ผลลัพธ์จะเป็นตัวอักษรเฮกซาเดซิมอลตัวเล็กจำนวน 40 ตัว (160 บิต) เสมอ
SHA-1 อย่างสังเขป
| คุณสมบัติ | ค่า |
|---|---|
| ขนาดข้อมูลที่ส่งออก | 160 บิต / 40 ตัวอักษรเฮกซาเดซิมอล |
| ขนาดบล็อก | 512 บิต |
| จำนวนรอบ | 80 |
| ความสามารถในการต้านทานการชน | แตก (พรีฟิกซ์ที่เลือก 2^63) |
| ความต้านทานต่อภาพเบื้องต้น | ยังสมบูรณ์ (ณ เวลาเขียนบทความนี้) |
| ความเร็ว | ประมาณ 500 เมกะไบต์ต่อวินาทีบนคอร์สมัยใหม่เพียงตัวเดียว |
กรณีที่ SHA-1 ยังคงสามารถใช้งานได้
- Git: รหัสประจำตัวของคอมมิต (commit ID) และบล็อบ (blob ID) เป็น SHA-1 โดยสามารถใช้ SHA-256 ได้ตามต้องการ การเกิดคอลิชันอาจทำให้ประวัติการเปลี่ยนแปลงสับสน แต่ไม่สามารถปลอมแปลงคอมมิตได้หากไม่มีกุญแจเฉพาะของผู้เขียน
- การกำจัดข้อมูลซ้ำที่ไม่เกี่ยวข้องกับความปลอดภัย: การระบุตำแหน่งเนื้อหาในระบบจัดเก็บข้อมูล โดยที่แบบจำลองภัยคุกคามไม่รวมถึงผู้โจมตี
- API ที่รองรับการใช้งานแบบย้อนกลับได้ ตัวเชื่อมโยงเว็บเวอร์ชันเก่า เช่น
X-Hub-Signature(v1) ของ GitHub - ตัวระบุทางนิติวิทยาศาสตร์: การสร้างลายนิ้วมือของไฟล์เพื่อการกำจัดข้อมูลซ้ำในคลังข้อมูล
ในกรณีที่ SHA-1 ไม่สามารถนำมาใช้ได้
- ใบรับรอง TLS: เบราว์เซอร์เริ่มไม่ไว้วางใจใบรับรองที่ใช้แฮชฟังก์ชัน SHA-1 ตั้งแต่ปี 2017 เป็นต้นมา
- การลงนามด้วยรหัส: ไมโครซอฟท์ แอปเปิล และโมซิลลา ได้ปฏิเสธการใช้ลายเซ็นแบบ SHA-1
- การแฮชรหัสผ่าน: ใช้ Argon2id หรือ bcrypt
- HMAC ในรูปแบบการออกแบบใหม่ ควรใช้ HMAC-SHA-256 เป็นอย่างน้อย
หากคุณต้องการตรวจสอบผลลัพธ์
ให้เปรียบเทียบกับ echo -n "hello" | sha1sum บนระบบยูนิกซ์ใดๆ สตริง hello จะให้ค่าแฮชเป็น aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
คำถามที่พบบ่อย
ไม่ใช่ในเชิงคณิตศาสตร์ สำหรับข้อมูลอินพุตสั้นทั่วไป ผู้โจมตีที่มีพจนานุกรมที่คำนวณไว้ล่วงหน้าสามารถระบุข้อมูลเหล่านั้นได้ทันที ดังนั้นการใช้เพียงแฮชเท่านั้นจึงไม่เพียงพอในการป้องกันรหัสผ่าน ส่วนสำหรับสตริงสุ่มยาว 40 ตัวอักษร ไม่มีวิธีการถอดรหัสย้อนกลับที่ใช้งานได้จริง
ไม่ใช่ SHA (Secure Hash Algorithm) เป็นกลุ่มอัลกอริทึมที่เผยแพร่โดย NIST โดย SHA-1 เป็นอัลกอริทึมขนาด 160 บิตที่พัฒนาขึ้นในปี ค.ศ. 1995 ส่วน SHA-2 ประกอบด้วย SHA-224, SHA-256, SHA-384 และ SHA-512
เพื่อให้สอดคล้องกับประวัติการใช้งานที่ยาวนานกว่าหนึ่งทศวรรษ ตั้งแต่ปี 2017 เป็นต้นมา Git ได้ปรับปรุงระบบเพื่อป้องกันปัญหาการชนกันของพรีฟิกซ์ที่เลือกไว้ (SHA-1DC) และรองรับคลังข้อมูลที่ใช้ SHA-256 สำหรับโปรเจกต์ใหม่ๆ
บนเซิร์ฟเวอร์ของเรา ข้อความของคุณจะถูกส่งผ่านการเชื่อมต่อที่เข้ารหัส แล้วนำไปแฮชด้วยฟังก์ชัน SHA-1 มาตรฐาน จากนั้นจะส่งค่าดิเจสต์ความยาว 40 ตัวอักษรกลับมา เราไม่จัดเก็บข้อความที่คุณส่งเข้ามา และเนื่องจาก SHA-1 เป็นฟังก์ชันทางเดียว จึงไม่สามารถแปลงค่าดิเจสต์กลับไปเป็นข้อความต้นฉบับของคุณได้
เครื่องมือที่เกี่ยวข้อง
ตัวสร้าง HMAC
สร้างลายเซ็น HMAC (SHA-256, SHA-384, SHA-512, SHA-1 และ MD5) จากข้อความและกุญแจลับ เพื่อใช้ในการยืนยันตัวตนผ่าน API และ Webhook
ตัวเข้ารหัสไฟล์ Base64
เข้ารหัสไฟล์ใดก็ได้ (PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ) เป็นข้อความ Base64 เพื่อฝังใน JSON, อีเมล, YAML หรือ data URI ทำงานในเครื่องของคุณ ไม่มีการอัปโหลด
เครื่องแปลง Gwei เป็น Ether
แปลงจำนวนในหน่วย Gwei เป็น Ether (ETH) ด้วยทศนิยมสูงสุด 18 ตำแหน่ง มีประโยชน์สำหรับการประมาณค่าธรรมเนียม Gas และการอ่านข้อมูลธุรกรรม
ตัวสร้าง JWT
สร้าง JWT ที่มีการลงนาม โดยกำหนดหัวข้อ (header) แบบกำหนดเอง สิทธิ์ของพารามิเตอร์ในเนื้อหา (payload claims) การลงนามด้วย HMAC หรือ RSA รวมถึงกำหนดระยะเวลาหมดอายุและกลุ่มผู้ใช้งานที่อนุญาต เพื่อใช้ในการทดสอบ
ตัวสร้างแฮช (Hash Generator)
สร้างค่าแฮช MD5, SHA-1, SHA-256, SHA-384, SHA-512 และ CRC32 จากข้อความ พร้อมค่าไดเจสต์พร้อมคัดลอกสำหรับเช็คซัมและการเปรียบเทียบ
ตัวระบุการเข้ารหัส
วางไซเฟอร์เท็กซ์หรือแฮช แล้วตัวระบุจะแนะนำอัลกอริทึมหรือการเข้ารหัสที่น่าจะเป็น: MD5, SHA, bcrypt, AES, RSA, Base64 และอื่น ๆ
เครื่องมือนี้มีให้บริการในภาษาอื่น
- SHA1ハッシュジェネレータ [JA]
- SHA1-hashgenerator [SV]
- SHA1-hashgenerator [NL]
- SHA1 해시 생성기 [KO]
- Generator Hash SHA1 [ID]
- SHA1-Hash-Generator [DE]
- مولد تجزئة SHA1 [AR]
- Gerador de Hash SHA1 [PT]
- Generador de Hash SHA1 [ES]
- Generator skrótów SHA1 [PL]
- Bộ tạo giá trị hash SHA1 [VI]
- Générateur de hachage SHA1 [FR]
- SHA1 Hash Generator [EN]
- Generatore di hash SHA1 [IT]
- Генератор хешей SHA1 [RU]
- SHA1 Hash Oluşturucu [TR]
- SHA1哈希生成器 [ZH]