Penjana Hash & Pengecam
Dapatkan MD5, SHA-1, SHA-256, SHA-384 dan SHA-512 untuk teks dan fail sekaligus. Sahkan fail yang dimuat turun dengan pengesahan rasminya untuk memastikan ia tidak dirasuk. Semuanya setempat, tiada apa yang meninggalkan pelayar anda.
- Algoritma
- MD5 · SHA-1/256/384/512
- Enjin
- Web Crypto API
- Privasi
- 100% setempat
- Input
- Teks / fail
Jatuhkan fail di sini, atau klik untuk melayari
Oktet fail dibaca secara setempat untuk mengira pengesahan — tiada apa yang dimuat naik. Berfungsi dengan pemasang, imej cakeranya dan arkib.
CIRI-CIRI
Kesemua lima hash di satu halaman
Dari cap jari cepat hingga tandatangan selamat — setiap hash yang diperlukan pembangun, pengendali operasi dan pengesahan muat turun.
Lima algoritma
MD5, SHA-1, SHA-256, SHA-384 dan SHA-512 ditunjukkan bersama dengan panjang bit output — tidak perlu bertukar antara alat lagi.
Pengiraan masa nyata
Hash teks ketika anda menaip, tiada butang untuk ditekan. Hasil dalam fon teks tetap — klik baris untuk menyalin.
Pengeintegriti fail
Jatuhkan pemasang, imej cakeranya atau arkib dan bandingkan dengan pengesahan rasmi untuk mengesahkan muat turun yang tidak dirasuk.
Setempat, nol muat naik
Keluarga SHA menggunakan Web Crypto API terbina dalam pelayar. Teks dan fail tidak pernah meninggalkan mesin anda — kandungan sensitif adalah selamat.
Konsisten UTF-8
Teks di-hash sebagai bait UTF-8, jadi hasilnya sama persis dengan md5sum, PHP md5() dan Python hashlib.
Salin dengan satu klik
Salin setiap hash secara individu, atau semua hash dalam format checksum standard yang siap disisipkan ke terminal.
Apa yang patut awak tahu tentang hash
Idenya mudah, tetapi menggunakan yang salah untuk tugas yang salah adalah kesalahan keselamatan yang serius.
Apa sebenarnya MD5 dan SHA-1 itu?
MD5 (Message-Digest Algorithm 5) direka oleh Ronald Rivest di MIT dan diterbitkan pada tahun 1992 sebagai RFC 1321, menjana ringkasan (digest) 128-bit tetap (32 aksara heks) sebagai pengganti MD4. SHA-1 direka oleh Agensi Keselamatan Dalam Negeri AS dan diterbitkan pada tahun 1995 sebagai standard persekutuan FIPS 180-1, menjana 160 bit. Kedua-duanya menjadi algoritma hash yang paling banyak digunakan dalam dua dekad berikutnya — digunakan untuk checksum fail, penyimpanan kata laluan, tandatangan digital dan ID komit Git. Perhatikan bahawa ia masih menjana ringkasan yang betul hari ini; "tidak selamat" bermakna ketahanan pertembungan (collision resistance) mereka telah rosak, bukan bermakna output mereka salah.
Adakah hashing, penyulitan dan pengekodan adalah perkara yang sama?
Tidak — mereka menyelesaikan masalah yang berbeza. Pengekodan (seperti Base64 atau pengekodan URL) ialah transformasi format boleh undur yang boleh diundur oleh sesiapa, tanpa menawarkan keselamatan. Penyulitan boleh diundur dengan kunci: teks jelas menjadi teks sulit dan kunci yang betul akan menyahsulitnya. Hashing adalah satu arah, tidak mempunyai kunci, dan yang asal tidak dapat dipulihkan daripada ringkasan — ia digunakan untuk cap jari, pemeriksaan integriti dan tandatangan. Dua salah tanggapan biasa: menganggap Base64 sebagai "penyulitan", dan mengatakan kata laluan telah "disulitkan dengan MD5" — itu adalah hashing, dan cara yang tidak selamat untuk menyimpan kata laluan pada masa yang sama.
Mengapa hash tidak boleh dipulihkan kembali ke yang asal?
Hash ialah fungsi satu arah: input sebarang panjang dimampatkan ke dalam ringkasan panjang tetap, mengaburkan sebahagian besar maklumat. Sama seperti anda tidak boleh membina semula ayat daripada kiraan perkataannya, yang asal tidak boleh diturunkan daripada ringkasan. Algoritma selamat direka khusus untuk membuat pembalikan sedemikian secara tidak mungkin dari segi pengiraan.
Adakah MD5 dan SHA-1 masih boleh digunakan?
Untuk memeriksa sama ada fail telah rosak secara tidak sengaja semasa dalam perjalanan — ya, sebarang perubahan bait secara rawak hampir selalu mengubah MD5. Tetapi jangan pernah gunakannya untuk keselamatan: serangan pertembungan praktikal wujud untuk kedua-duanya (penyelidik boleh mencipta dua fail berbeza dengan MD5 yang sama di bawah kawalan mereka). Gunakan SHA-256 atau lebih tinggi untuk kata laluan, tandatangan dan sijil.
Mengapa hash saya berbeza dengan alat lain untuk teks yang sama?
Tiga penyebab biasa: ① pengekodan aksara yang berbeza (alat ini sentiasa menggunakan UTF-8; alat lama mungkin menggunakan GBK atau Latin-1); ② baris baharu pada akhirnya — echo baris perintah menambah satu secara lalai (gunakan echo -n); ③ ruang rawak atau aksara tidak kelihatan semasa menyalin. Hash adalah sensitif kepada setiap bait, jadi satu bait berbeza sahaja mengubah hasilnya sepenuhnya.
Mengapa kata laluan tidak boleh disimpan sebagai MD5/SHA-256 biasa?
Hash biasa adalah cepat. Dengan jadual hash yang bocor, penyerang boleh mencuba berbilion tekaan sesaat, dan jadual pelangi (rainbow tables) membuat carian undur kata laluan biasa serta-merta. Kata laluan memerlukan algoritma perlahan secara memori (bcrypt, scrypt, Argon2) yang sengaja lambat dengan garam unik (salt) setiap kata laluan, membuat serangan brute force menjadi sangat mahal.
Bagaimana saya mengesahkan integriti fail yang dimuat turun?
Cari sum semakan yang diterbitkan di laman rasmi (biasanya SHA-256), seret fail yang dimuat turun ke tab "Sum semakan fail" di sini, dan tampal nilai rasmi ke dalam kotak di atas hasil. Alat ini mengesan algoritma daripada panjang nilai dan menjadikan baris sepadan berwarna hijau apabila bait fail betul-betul seperti yang diterbitkan oleh penerbit; warna merah bermakna kerosakan atau penggantian oleh man-in-the-middle — jangan jalankan fail tersebut.
Antara lima algoritma ini, yang mana satu hendak digunakan
Pilih berdasarkan senario. Algoritma yang lebih baru menghasilkan digest yang lebih panjang, lebih tahan terhadap serangan dan sedikit lebih mahal untuk dikira.
| Algoritma | Diperkenalkan | Panjang output | Keselamatan | Penggunaan biasa |
|---|---|---|---|---|
| MD5 | 1992 | 128 bit (32 aksara) | Tidak terjamin; perlanggaran praktikal | Cap jari bukan keselamatan, deduplikasi, keserasian legacy |
| SHA-1 | 1995 | 160 bit (40 aksara) | Perlanggaran praktikal sejak 2017 | ID sejarah Git dan sistem legacy lain; tidak untuk penggunaan keselamatan baharu |
| SHA-256 | 2001 | 256 bit (64 aksara) | Terjamin pada masa kini | Sum semakan fail, tandatangan, sijil TLS, blockchain — lalai universal |
| SHA-384 | 2001 | 384 bit (96 aksara) | Terjamin | SHA-512 yang dipotong untuk rejim pematuhan yang memerlukan 384 bit |
| SHA-512 | 2001 | 512 bit (128 aksara) | Terjamin | Tandatangan jaminan tinggi; selalunya lebih pantas daripada SHA-256 pada CPU 64-bit |
"Terjamin" bermakna tiada serangan perlanggaran awam praktikal setakat ini. Untuk menyimpan kata laluan, gunakan bcrypt/Argon2 tanpa mengira pilihan hash.
Sum semakan: cara mengesahkan fail yang dimuat turun dengan betul
Apakah tujuan rentetan MD5 atau SHA-256 pada laman muat turun, cara membandingkannya, dan apa yang perlu dibandingkan — semuanya dalam satu bahagian.
Mengapa perlu mengesahkan sama sekali
Fail pada cakeranya anda tidak semestinya sama dengan fail pada pelayan. Sepuluh saat membandingkan sum semakan melindungi daripada tiga jenis masalah:
Fail besar pada muat turun yang boleh disambung semula dan rangkaian tidak stabil sering menerima bait asing secara mengejutkan; menyelesaikan masalah pemasang yang rosak mengambil masa jauh lebih lama daripada sepuluh saat.
Banyak muat turun sebenarnya datang dari cermin atau CDN, di mana kelewatan penyegerakan atau gangguan cache boleh memberi anda keluaran usang — atau separuh fail.
Apabila sumber muat turun digodam atau rangkaian awam dirampas, fail boleh disisipkan backdoor. Pada 2016 laman Linux Mint digodam dan pautan muat turunnya ditukar kepada ISO yang disisipkan backdoor — respons pertama projek tersebut menggesa semua orang menyemak sum semakan.
Apakah itu sum semakan
Penerbit menhasilkan hash pada fail di pelayan mereka dan menyiarkan hasilnya pada halaman muat turun; setelah memuat turun, anda menghasilkan hash sekali lagi secara tempatan. Jika kedua-dua rentan karakter sepadan, bait-bait fail adalah betul-betul seperti yang dilepaskan oleh penerbit — tidak rosak mahu pun ditukar. Pemeriksaan ini sensitif kepada setiap bait: ubah satu bait sahaja dan nilai akan berubah sepenuhnya. Secara umum, checksum juga termasuk skim yang lebih mudah seperti CRC32 yang hanya mengesan kerosakan tidak sengaja, manakala kriptografik seperti MD5/SHA pula menentang pemalsuan sengaja.
Sahkan fail dalam tiga langkah
-
1
Dapatkan checksum rasmi
Pada halaman muat turun, cari nilai MD5 / SHA-256 yang diterbitkan (selalu dilabel "checksum" atau dibekalkan sebagai fail teman .sha256) dan salin keseluruhan rentetan.
-
2
Jatuhkan fail dan tampal
Tukar ke tab "File checksum" di atas, jatuhkan fail yang dimuat turun, dan tampal checksum ke dalam kotak di atas hasil.
-
3
Baca keputusan mengikut warna
Alat ini mengesan algoritma berdasarkan panjang nilai: hijau bermakna fail sepadan betul-betul dengan keluaran rasmi dan selamat digunakan; merah bermakna fail mungkin rosak atau telah diubah suai — jangan jalankannya.
Membaca checksum di laman rasmi
Halaman muat turun menulis checksum dalam pelbagai gaya, tetapi semuanya terbahagi kepada dua elemen: nilai hash dan nama fail. Tiga format ini adalah yang paling biasa — ketika menampal, ambil hanya bahagian hash sahaja (alat ini mengabaikan ruang dan pemisah baris secara automatik):
# 1. Baris tunggal: nilai sahaja
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
# 2. Format sha256sum: nilai + dua ruang + nama fail (manifest SHA256SUMS mengandungi banyak baris seperti ini)
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a ubuntu-24.04.iso
# 3. Format BSD: Algoritma (nama fail) = nilai
SHA256 (ubuntu-24.04.iso) = a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
MD5 atau SHA-256
Sahkan apa sahaja yang disediakan oleh laman rasmi, tetapi jika anda boleh memilih: MD5 cukup memadai menentang kerosakan tidak sengaja semasa dalam perjalanan (sebarang perubahan rawak hampir selalu akan mengubah MD5). Menentang pengubahan sengaja — perisian keselamatan, sijil, pakej ditandatangani — anda memerlukan SHA-256 atau yang lebih kukuh, kerana serangan perlanggaran praktikal membenarkan penyerang mencipta dua fail berbeza dengan MD5 yang sama. Kisah ini diterangkan di dalam "sejarah keselamatan" di bawah.
Mengesahkan dari baris arahan sebaliknya
Pada Linux dan macOS, alat checksum menerima -c untuk mengesahkan keseluruhan manifest secara automatik — tiada perbandingan manual diperlukan. Arahan terbina dalam Windows hanya mengira nilai, yang kemudian anda bandingkan sendiri dengan rentetan rasmi.
| Persekitaran | Arahan pengesahan |
|---|---|
| Linux | sha256sum -c SHA256SUMS (menyemak setiap fail yang disenaraikan dalam manifest) |
| macOS | shasum -a 256 -c checksum.txt |
| Pengesahan nilai tunggal cepat | echo "nilai-rasmi nama-fail" | sha256sum -c - (menunjukkan OK jika berjaya) |
| Windows | Kira dengan Get-FileHash <fail> -Algorithm SHA256, kemudian bandingkan dengan nilai rasmi |
Sejarah keselamatan ringkas: bagaimana MD5 dipecahkan
MD5 tidak gagal dalam satu malam — daripada keretakan pertama dalam dunia akademik hingga sijil palsu secara meluas, ia mengambil masa dua dekad.
-
1992
MD5 diterbitkan
Ronald Rivest melancarkan MD5 dalam RFC 1321. Cepat, mudah dilaksanakan dan selalu menghasilkan ringkasan 128-bit, ia dengan cepat menjadi piawaian de facto untuk cekum fail dan penyimpanan kata laluan — dan dianggap selamat secara kriptografi.
-
2004
Pasukan Wang Xiaoyun mendedahkan perlanggaran penuh MD5
Di CRYPTO 2004, pasukan yang diketuai oleh ahli matematik Cina Wang Xiaoyun menunjukkan serangan perlanggaran penuh ke atas MD5 — membina dua fail dengan kandungan berbeza tetapi nilai cincang yang sama (pada mulanya dalam lebih kurang sejam pada superkomputer IBM P690; penambahbaikan kemudian mengurangkannya kepada beberapa saat pada perkakasan biasa). Ketahanan perlanggaran MD5 yang dijanjikan telah hilang; tepukan bergemuruh berikut menjadi salah satu saat paling terkenal dalam kriptografi.
-
2008
Sijil dipalsukan mencapai internet sebenar
Marc Stevens, Alexander Sotirov dan yang lain menggunakan perlanggaran awalan terpilih untuk memalsukan sijil CA perantaraan yang dipercayai oleh pelayar: sijil dengan awalan berbeza membawa tandatangan yang sama. Penyerang kini boleh mengeluarkan sijil HTTPS "sah" untuk mana-mana laman palsu. Pihak berkuasa sijil berhenti mengeluarkan sijil MD5 sejurus selepas itu.
-
2012
Perisian hasad Flame menyerang Windows melalui MD5
Perisian hasad Flame yang ditaja oleh negara menggunakan perlanggaran MD5 untuk membuat pihak berkuasa pelesenan pelayan terminal Microsoft menandatangani sijil penandatanganan kod yang dipalsukan, membenarkannya menyebar di seluruh Timur Tengah dengan menyamar sebagai kemas kini yang ditandatangani Microsoft. Ia merupakan serangan dunia sebenar pertama yang menggunakan perlanggaran MD5; Microsoft membatalkan sijil tersebut dalam tampalan kecemasan.
-
2017
SHAttered: SHA-1 jatuh
Google dan institusi CWI Belanda (Marc Stevens et al.) menerbitkan dua fail PDF berbeza dengan cincang SHA-1 yang sama — dengan kos lebih kurang 6,500 tahun CPU dan 110 tahun GPU. Pelayar berhenti mempercayai sijil SHA-1 sejurus selepas itu, dan platform Git mempercepatkan migrasi mereka daripadanya. Era 160-bit telah berakhir.
Butiran penting: serangan perlanggaran tidak "memecahkan" cincang mana-mana fail sedia ada — ia membina dua fail khusus yang mempunyai nilai cincang yang sama. Namun untuk tandatangan dan sijil, itu sudah cukup untuk pemalsuan yang membawa maut.
Pencincangan dari baris perintah
Apabila pelayar tidak mudah didapat, setiap OS menghantar perintah terbina dalam (SHA-256 ditunjukkan).
| Persekitaran | Perintah |
|---|---|
| Linux / macOS | sha256sum filename (pada macOS: shasum -a 256 filename) |
| Windows PowerShell | Get-FileHash filename -Algorithm SHA256 |
| Windows CMD | certutil -hashfile filename SHA256 |
Pencincangan dalam kod
Contoh minimum dalam empat bahasa biasa semasa anda menulis skrip atau mengintegrasikan API.
async function sha256Hex(data) {
const bytes = typeof data === "string"
? new TextEncoder().encode(data)
: new Uint8Array(data);
const digest = await crypto.subtle.digest("SHA-256", bytes);
return [...new Uint8Array(digest)]
.map((b) => b.toString(16).padStart(2, "0"))
.join("");
}
// Text
console.log(await sha256Hex("hello"));
// Files: digest accepts an ArrayBuffer directly
const buf = await file.arrayBuffer();
console.log(await sha256Hex(buf));
Web Crypto asli pelayar hanya menyokong keluarga SHA dan memerlukan HTTPS atau localhost; MD5 memerlukan perpustakaan pihak ketiga.
echo hash('sha256', 'hello'); // 64 hex characters
echo md5('hello'); // same as hash('md5', 'hello')
// Streamed: hashes the file without loading it into memory
echo hash_file('sha256', 'setup.exe');
hash() dan hash_file() menyokong md5, sha1, sha256, sha512 dan banyak lagi; pencincangan fail adalah aliran, jadi ia menggunakan sedikit memori.
import hashlib
print(hashlib.sha256(b"hello").hexdigest())
print(hashlib.md5(b"hello").hexdigest())
# Large files: streamed, low memory (Python 3.11+)
with open("setup.exe", "rb") as f:
print(hashlib.file_digest(f, "sha256").hexdigest())
Perpustakaan standard hashlib tidak memerlukan pemasangan; gunakan file_digest() untuk pencincangan aliran fail besar (Python 3.11+).
use sha2::{Digest, Sha256};
use md5::Md5;
// Text
println!("{:x}", Sha256::digest(b"hello"));
println!("{:x}", Md5::digest(b"hello"));
// Large files: streamed, low memory
let mut file = std::fs::File::open("setup.exe")?;
let mut hasher = Sha256::new();
std::io::copy(&mut file, &mut hasher)?;
println!("{:x}", hasher.finalize());
Pencincangan tidak terdapat dalam perpustakaan standard; tambahkan kargo RustCrypto sha2 dan md-5 dalam Cargo.toml. Dengan ciri std didayakan, io::copy mengalirkan fail ke dalam pen cincang.
FAQ
Adakah teks dan fail saya telah diunggah?
Tidak. Semuanya dikira di dalam pelayar anda: panggilan keluarga SHA ke API Web Crypto terbina dalam, dan MD5 berjalan dalam JavaScript halaman. Alat ini terus berfungsi tanpa sambungan rangkaian — cubalah dengan fail sensitif.
Kenapa teks kosong masih mempunyai hash?
Algoritma hash mentakrifkan output tetap unik walaupun untuk sifar bait. MD5 rentetan kosong ialah d41d8cd98f00b204e9800998ecf8427e dan SHA-256nya bermula dengan e3b0c442. Alat ini hanya menyembunyikan hasil apabila input kosong supaya anda tidak menyalinnya secara tidak sengaja.
Bolehkah ia menghash fail dengan sebarang saiz?
Ia bergantung pada ingatan pelayar yang tersedia — pemasang dan imej cakerana beberapa ratus MB biasanya boleh. Fail dibaca ke dalam ingatan dalam satu laluan, jadi untuk fail berbilang GB lebih baik gunakan alat baris perintah (sha256sum, certutil).
Kenapa hash mempunyai panjang berbeza?
Panjang ditentukan oleh algoritma: MD5 ialah 32 aksara heksa, SHA-1 ialah 40, SHA-256 ialah 64 dan SHA-512 ialah 128. Dua aksara heksa setiap bait — dan panjangnya tidak bergantung pada saiz input: fail satu bait dan fail berbilang GB kedua-duanya menghasilkan 64 aksara dengan SHA-256.
Bolehkah saya menggunakannya untuk membina tandatangan API?
Ya. Banyak platform terbuka menandatangani permintaan dengan menghash "parameter + rahsia" menggunakan MD5 atau SHA-256. Alat ini sangat bagus untuk menyemak nilai tandatangan semasa nyahpepijat; dalam pengeluaran, kira hash dalam pustaka bahasa sisi pelayan anda dan jangan sekali tanamkan rahsia dalam kod hadapan.
Bagaimana saya membandingkan checksum dengan alat ini?
Tukar ke tab "Checksum fail", jatuhkan fail, dan tampal checksum dari laman rasmi ke dalam kotak di atas hasil. Alat ini mengesan algoritma secara automatik berdasarkan panjang (32 aksara MD5, 40 SHA-1, 64 SHA-256, 96 SHA-384, 128 SHA-512): baris yang sepadan bertukar warna hijau dengan nota "Lulus" apabila ia sepadan, dan merah apabila tidak. Huruf besar kecil, ruang sekeliling dan pemisah baris diabaikan secara automatik.
Alat berkaitan
Alat pengekodan, kripto dan kata laluan yang lain.
Encode / Decode Base64
Tukar antara binari dan teks — berguna untuk URI Data dan nyahpepijat autentik asas HTTP.
Penjana Kata Laluan
Jana kata laluan rawak yang kukuh — kata laluan hendaklah rawak dan unik, bukan "disesuaikan" dengan hash.
Penyemak Kekuatan Kata Laluan
Semak sama ada kata laluan cukup panjang dan rawak, dan sama ada ia telah muncul dalam kebocoran yang diketahui.