ToolDeck

เครื่องสร้าง Hash SHA-1

สร้าง hash SHA-1 จากข้อความใด ๆ

ข้อความป้อนเข้า

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ

Hash SHA-1

Hash SHA-1 จะแสดงที่นี่…

SHA-1 Hashing คืออะไร?

SHA-1 (Secure Hash Algorithm 1) เป็นฟังก์ชันแฮชเข้ารหัสลับที่สร้าง digest ขนาด 160 บิต (20 ไบต์) จากข้อมูลอินพุตใด ๆ เผยแพร่โดย NSA และได้รับการกำหนดมาตรฐานโดย NIST ในปี 1995 ในรูป FIPS PUB 180-1 และต่อมาได้รับการบันทึกใน RFC 3174 โดย SHA-1 ถูกออกแบบมาเพื่อเป็นตัวสืบทอดที่แข็งแกร่งกว่า SHA-0 และ MD5 อัลกอริทึมประมวลผลข้อมูลอินพุตในบล็อกขนาด 512 บิต ผ่าน 80 รอบของการดำเนินการระดับบิต โดยสร้างลายนิ้วมือเลขฐานสิบหก 40 ตัวอักษร ซึ่งเคยเป็นรากฐานของ SSL/TLS, PGP, SSH และ IPsec มานานกว่าทศวรรษ

เช่นเดียวกับฟังก์ชันแฮชเข้ารหัสลับทุกชนิด SHA-1 เป็นการแปลงทางเดียว: การคำนวณแฮชจากอินพุตนั้นรวดเร็ว แต่การกู้คืนอินพุตจากแฮชเพียงอย่างเดียวนั้นไม่สามารถทำได้จริงในเชิงคำนวณ การเปลี่ยนแปลงเพียงหนึ่งบิตในอินพุตจะทำให้ digest ขนาด 160 บิตเปลี่ยนแปลงไปอย่างสิ้นเชิง ซึ่งเป็นคุณสมบัติที่เรียกว่า avalanche effect SHA-1 แมปช่องอินพุตขนาดใหญ่ตามอำเภอใจไปยังเอาต์พุตขนาด 160 บิตคงที่ ซึ่งหมายความว่าการชน (collision) ระหว่างสองอินพุตที่แตกต่างกันซึ่งสร้างแฮชเดียวกันนั้นต้องมีอยู่จริงในเชิงคณิตศาสตร์ ข้อกำหนดด้านความปลอดภัยของฟังก์ชันแฮชคือการค้นหา collision ดังกล่าวควรต้องใช้การดำเนินการประมาณ 2^80 ครั้ง ซึ่งเท่ากับครึ่งหนึ่งของความยาวบิตเอาต์พุต

ในปี 2017 Google และ CWI Amsterdam ได้เผยแพร่การโจมตี SHAttered โดยแสดงให้เห็นการชน SHA-1 ครั้งแรกในทางปฏิบัติ ด้วยการสร้างไฟล์ PDF สองไฟล์ที่แตกต่างกันแต่มี digest เดียวกัน การโจมตีนี้ต้องใช้การคำนวณ SHA-1 ประมาณ 2^63.1 ครั้ง ซึ่งต่ำกว่าขีดจำกัดทางทฤษฎีที่ 2^80 มาก ในปี 2020 Gaetan Leurent และ Thomas Peyrin ได้ลดต้นทุนลงอีกด้วยการโจมตี chosen-prefix collision ที่ต้องใช้การดำเนินการประมาณ 2^63.4 ครั้ง ผลที่ตามมาคือเบราว์เซอร์หลัก หน่วยงานออกใบรับรอง และองค์กรมาตรฐานต่าง ๆ ได้ยกเลิกการใช้ SHA-1 สำหรับลายเซ็นดิจิทัลและใบรับรอง TLS อย่างไรก็ตาม SHA-1 ยังคงใช้งานอยู่สำหรับวัตถุประสงค์ที่ไม่ใช่ด้านความปลอดภัย ได้แก่ ID อ็อบเจกต์ใน Git (แม้ว่า Git กำลังย้ายไปใช้ SHA-256), โครงสร้าง HMAC รุ่นเก่า และการตรวจสอบความสมบูรณ์ของไฟล์ที่ไม่ต้องการความทนทานต่อการชนแบบปฏิปักษ์

ทำไมต้องใช้เครื่องมือสร้าง SHA-1 นี้?

สร้างแฮช SHA-1 ได้ทันทีโดยไม่ต้องติดตั้งอะไรหรือเขียนโค้ด วางข้อความของคุณแล้วรับ hex digest 40 ตัวอักษรแบบเรียลไทม์ — มีประโยชน์สำหรับการตรวจสอบ checksum รุ่นเก่า, การดีบัก Git internals หรือการทดสอบเวิร์กโฟลว์ที่ใช้แฮช

แฮชทันที
ผลลัพธ์อัปเดตขณะที่คุณพิมพ์ ไม่ต้องคลิกปุ่ม ไม่ต้องรอ — SHA-1 digest ปรากฏทีละตัวอักษรขณะที่คุณแก้ไขอินพุต
🔒
ประมวลผลโดยให้ความเป็นส่วนตัวเป็นหลัก
การแฮชทั้งหมดทำงานในเครื่องในเบราว์เซอร์ของคุณโดยใช้ Web Crypto API ข้อความอินพุตของคุณไม่เคยออกจากอุปกรณ์และไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ใด ๆ
📋
คัดลอกด้วยคลิกเดียว
คัดลอกแฮชไปยังคลิปบอร์ดด้วยคลิกเดียว สลับระหว่างเอาต์พุต hex ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เพื่อให้ตรงกับรูปแบบที่ระบบของคุณต้องการ
🔍
ไม่ต้องมีบัญชี
ไม่ต้องสมัครสมาชิก ไม่ต้องเข้าสู่ระบบ ไม่มีขีดจำกัดการใช้งาน เปิดหน้าแล้วเริ่มแฮชได้ทันที ใช้งานได้บนอุปกรณ์ใด ๆ ที่มีเบราว์เซอร์สมัยใหม่

กรณีการใช้งาน SHA-1

Git Internals และการดีบัก
Git ระบุอ็อบเจกต์ทุกชนิด (commit, tree, blob, tag) ด้วยแฮช SHA-1 เมื่อดีบัก Git plumbing commands, ตรวจสอบ pack files หรือสร้างเครื่องมือ Git แบบกำหนดเอง เครื่องมือสร้าง SHA-1 ช่วยให้คุณตรวจสอบ object ID เทียบกับค่าที่คาดหวังได้อย่างรวดเร็ว
การตรวจสอบระบบรุ่นเก่า
ระบบเก่าหลายระบบ, registry ของแพ็กเกจ และกลไกการอัปเดตเฟิร์มแวร์ยังคงเผยแพร่ SHA-1 checksum ควบคู่กับการดาวน์โหลด สร้างและเปรียบเทียบแฮช SHA-1 เพื่อตรวจสอบความสมบูรณ์ของไฟล์เมื่อไม่มี SHA-256 digest
Subresource Integrity (SRI)
แม้ว่า sha256 และ sha384 จะเป็นที่นิยมสำหรับ SRI hashes ใน HTML script และ link tags แต่การกำหนดค่า CDN รุ่นเก่าบางส่วนยังคงพึ่งพา SHA-1 สร้าง digest ที่คาดหวังเพื่อตรวจสอบหรือเปลี่ยน SRI attributes ที่มีอยู่
QA และการทดสอบถดถอย
เปรียบเทียบแฮช SHA-1 ของ API responses, build artifacts หรือ database snapshots ระหว่างการทดสอบเพื่อตรวจจับการเปลี่ยนแปลงที่ไม่คาดคิดโดยไม่ต้องเปรียบเทียบแบบ byte ต่อ byte ของเอาต์พุตขนาดใหญ่
การกำจัดข้อมูลซ้ำ
คำนวณแฮช SHA-1 ของเนื้อหาไฟล์หรือระเบียนข้อมูลใน ETL pipelines เพื่อระบุรายการซ้ำ เอาต์พุต 160 บิตให้การรับประกันความเป็นเอกลักษณ์ที่แข็งแกร่งกว่า MD5 สำหรับสถานการณ์การกำจัดข้อมูลซ้ำที่ไม่มีปฏิปักษ์
การเรียนรู้และการศึกษา
SHA-1 เป็นอัลกอริทึมที่มีเอกสารอ้างอิงครบถ้วนพร้อมวรรณกรรมวิชาการมากมาย ทดลองใช้เพื่อทำความเข้าใจโครงสร้าง Merkle-Damgard, การจัดตารางข้อความ และสาเหตุที่ความทนทานต่อการชนล้มเหลวเมื่อความยาวเอาต์พุตสั้นเกินไปเมื่อเทียบกับกำลังการคำนวณสมัยใหม่

SHA-1 เทียบกับอัลกอริทึมแฮชอื่น ๆ

SHA-1 สร้าง digest ขนาด 160 บิต — ยาวกว่า MD5 (128 บิต) แต่สั้นกว่าอัลกอริทึมในตระกูล SHA-2 อย่างมีนัยสำคัญ ตารางด้านล่างเปรียบเทียบขนาด digest, มาตรฐาน และกรณีการใช้งานที่เหมาะสมสำหรับแต่ละอัลกอริทึม

อัลกอริทึมขนาด Digestความยาว Hexมาตรฐานเหมาะสำหรับ
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

SHA-1 ทำงานอย่างไร

SHA-1 ใช้โครงสร้าง Merkle-Damgard: ข้อความถูก padding แล้วแบ่งเป็นบล็อกขนาด 512 บิต และแต่ละบล็อกถูกประมวลผลผ่าน 80 รอบของการดำเนินการระดับบิตที่ผสมอินพุตกับตารางข้อความที่ได้จากบล็อก state words ขนาด 32 บิตจำนวนห้าคำ (H0 ถึง H4) รับข้อมูลสถานะแฮชที่กำลังดำเนินการ และการเชื่อมต่อสุดท้ายของ words เหล่านี้สร้าง digest ขนาด 160 บิต

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
ขั้นตอนคำอธิบาย
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

ความแตกต่างหลักระหว่าง SHA-1 และ MD5 คือจำนวน state words (5 เทียบกับ 4), จำนวนรอบต่อบล็อก (80 เทียบกับ 64) และการใช้ตารางข้อความพร้อม left-rotate feedback ความแตกต่างเหล่านี้ทำให้ SHA-1 มีเอาต์พุตที่ใหญ่กว่า (160 เทียบกับ 128 บิต) และในตอนแรกให้ระยะห่างด้านความปลอดภัยที่สูงกว่า แม้ว่าทั้งสองอัลกอริทึมถือว่าเสียหายแล้วสำหรับความทนทานต่อการชน

ตัวอย่างโค้ด

วิธีสร้างแฮช SHA-1 ในภาษาและสภาพแวดล้อมยอดนิยม ต่างจาก MD5 ตรงที่ SHA-1 พร้อมใช้งานใน Web Crypto API ของเบราว์เซอร์ ทำให้ใช้งานได้โดยไม่ต้องใช้ไลบรารีภายนอกทั้งในสภาพแวดล้อมเบราว์เซอร์และ Node.js

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

คำถามที่พบบ่อย

SHA-1 ยังปลอดภัยอยู่ไหม?
SHA-1 ไม่ปลอดภัยสำหรับแอปพลิเคชันที่ต้องการความปลอดภัย การโจมตี SHAttered ในปี 2017 แสดงให้เห็นการสร้าง collision ในทางปฏิบัติ และการโจมตี chosen-prefix ในปี 2020 ทำให้ต้นทุนลดลงอีก สำหรับลายเซ็นดิจิทัล, ใบรับรอง TLS หรือสถานการณ์ที่ฝ่ายตรงข้ามสามารถสร้างอินพุตที่ชนกันได้ ให้ใช้ SHA-256 หรือ SHA-3 แทน สำหรับวัตถุประสงค์ที่ไม่ใช่ด้านความปลอดภัย เช่น checksum และ cache key ที่ไม่มีฝ่ายตรงข้ามควบคุมอินพุต SHA-1 ยังคงใช้งานได้
SHA-1 และ SHA-256 ต่างกันอย่างไร?
SHA-1 สร้าง digest ขนาด 160 บิต (40 ตัวอักษร hex) และมีความเสี่ยงต่อการโจมตีแบบ collision SHA-256 สร้าง digest ขนาด 256 บิต (64 ตัวอักษร hex) และอยู่ในตระกูล SHA-2 ซึ่งไม่มีการโจมตีในทางปฏิบัติที่ทราบ SHA-256 ช้ากว่า SHA-1 ประมาณ 20-30% บนฮาร์ดแวร์เดียวกัน แต่บิตเอาต์พุตเพิ่มเติม 96 บิตและการไม่มีจุดอ่อนเชิงโครงสร้างที่ทราบทำให้เป็นคำแนะนำเริ่มต้นสำหรับโปรเจกต์ใหม่ใด ๆ
ทำไม Git ถึงใช้ SHA-1?
เมื่อ Linus Torvalds ออกแบบ Git ในปี 2005 SHA-1 ถือว่าปลอดภัยและให้ความสมดุลที่ดีระหว่างความเร็วและความทนทานต่อการชนสำหรับที่จัดเก็บแบบ content-addressable Git ใช้ SHA-1 เป็นตัวระบุเนื้อหา ไม่ใช่กลไกความปลอดภัย มันตรวจจับความเสียหายโดยไม่ตั้งใจ ไม่ใช่การแทรกแซงจากฝ่ายตรงข้าม ตั้งแต่ปี 2021 Git ได้เปลี่ยนไปใช้ SHA-256 ผ่านเฟรมเวิร์ก hash extension ตามแผน git-hash-function-transition
คุณสามารถย้อนกลับแฮช SHA-1 ไปยังอินพุตต้นฉบับได้ไหม?
ไม่ได้ SHA-1 เป็นฟังก์ชันทางเดียวที่ละทิ้งข้อมูลระหว่างการแฮช สำหรับอินพุตสั้นหรืออินพุตทั่วไป ผู้โจมตีสามารถใช้ rainbow tables หรือการค้นหาแบบ brute-force เพื่อค้นหา plaintext ต้นฉบับ แต่นี่ไม่ใช่การย้อนกลับอัลกอริทึม แต่เป็นการค้นหาอย่างละเอียดของช่องอินพุต สำหรับรหัสผ่าน ให้ใช้ bcrypt, scrypt หรือ Argon2 แทนฟังก์ชันแฮชที่รวดเร็ว
การโจมตี SHAttered ทำงานอย่างไร?
การโจมตี SHAttered ใช้ประโยชน์จากจุดอ่อนเชิงโครงสร้างในฟังก์ชันการบีบอัดของ SHA-1 ด้วยการสร้างบล็อกข้อความ 512 บิตสองบล็อกที่แตกต่างกันอย่างระมัดระวัง ซึ่งสร้างสถานะแฮชกลางเดียวกัน ผู้โจมตีสร้างไฟล์ PDF สองไฟล์ที่มี SHA-1 digest เหมือนกันแต่เนื้อหาที่มองเห็นต่างกัน การโจมตีต้องใช้การคำนวณ SHA-1 ประมาณ 2^63 ครั้ง ซึ่งเทียบเท่ากับประมาณ 6,500 ปีของเวลา CPU เดี่ยว แต่ทำได้จริงบนกลุ่ม GPU ในช่วงเวลาหลายเดือน ต้นทุนลดลงอีกด้วยเทคนิคที่ปรับปรุงแล้ว
SHA-1 และ HMAC-SHA1 ต่างกันอย่างไร?
SHA-1 เป็นฟังก์ชันแฮชธรรมดา: hash = SHA1(message) HMAC-SHA1 เป็น message authentication code แบบใช้กุญแจ: mac = HMAC(key, message) HMAC ห่อหุ้มฟังก์ชันแฮชในโครงสร้างที่ป้องกันการโจมตีแบบ length-extension และต้องใช้กุญแจลับ ที่น่าสนใจคือ HMAC-SHA1 ยังคงถือว่าปลอดภัยสำหรับการยืนยันตัวตนของข้อความแม้ว่า SHA-1 เองจะเสียหายแล้วสำหรับความทนทานต่อการชน เพราะความปลอดภัยของ HMAC ขึ้นอยู่กับคุณสมบัติฟังก์ชัน pseudorandom ของฟังก์ชันการบีบอัด ไม่ใช่ความทนทานต่อการชน
ควรใช้ SHA-1 หรือ MD5 สำหรับ checksum ของไฟล์?
SHA-1 เป็นตัวเลือกที่ดีกว่า MD5 สำหรับ checksum ของไฟล์ MD5 สร้าง digest ขนาด 128 บิตและถูกทำลายตั้งแต่ปี 2004 โดยการโจมตีแบบ collision ในทางปฏิบัติสามารถดำเนินการได้ในเวลาไม่กี่วินาที SHA-1 สร้าง digest ขนาด 160 บิตและการโจมตีแบบ collision แม้จะถูกพิสูจน์แล้ว แต่ยังคงมีต้นทุนสูงกว่า อย่างไรก็ตาม สำหรับระบบใหม่ใด ๆ ควรเลือกใช้ SHA-256 ซึ่งให้ digest ขนาด 256 บิตที่ไม่มีการโจมตีในทางปฏิบัติที่ทราบ และรองรับได้ดีในทุกแพลตฟอร์มและภาษา