Skip to content

SHA-1 Hash Generator (160-bit, Algoritma Usang)

Hasilkan hash SHA-1 di browser — output hex 40 karakter, tanpa unggah. Algoritma usang untuk sidik jari Git, cek sertifikat lama, dan audit migrasi. Data tidak pernah meninggalkan perangkat Anda.

Tanpa Pelacakan Berjalan di Browser Gratis
⚠️ SHA-1 adalah algoritma usang. Gunakan SHA-256 untuk pekerjaan baru. Semua hashing berjalan secara lokal — tidak ada data yang diunggah.
Algoritma
Ditinjau untuk kebenaran SHA-1 terhadap vektor uji NIST FIPS 180-1; framing deprecation diverifikasi terhadap NIST SP 800-131A — Go Tools Engineering Team · May 28, 2026

Apa Itu SHA-1?

SHA-1 (Secure Hash Algorithm 1) adalah fungsi hash kriptografis 160-bit yang diterbitkan oleh NIST pada 1995 sebagai FIPS 180-1. Ia dirancang oleh Badan Keamanan Nasional AS untuk menggantikan SHA-0 (versi sebelumnya yang cacat, ditarik cepat pada 1993) dan merupakan algoritma hash dominan untuk tanda tangan digital, sertifikat TLS, dan penandatanganan kode sepanjang tahun 2000-an.

Riwayat keretakan: Pada 2005, tim Xiaoyun Wang menerbitkan serangan teoritis yang mengurangi ketahanan tabrakan SHA-1 dari 2^80 yang diharapkan menjadi 2^63 operasi — keretakan teoritis, belum praktis. Pada Februari 2017, Google dan CWI Amsterdam merilis serangan SHAttered, menghasilkan dua dokumen PDF berbeda dengan hash SHA-1 identik menggunakan sekitar 110 GPU-tahun komputasi. Ini adalah keretakan praktis yang definitif. NIST telah men-deprecate SHA-1 untuk tanda tangan pada 2011 (NIST SP 800-131A); vendor browser dan CA mengikuti dengan menghapus dukungan sertifikat SHA-1 pada 2016–2017.

Status saat ini: SHA-1 telah dilarang untuk semua penggunaan yang sensitif terhadap keamanan — tanda tangan digital, sidik jari sertifikat, penyimpanan kata sandi, dan penandatanganan kode. Ia tetap ada dalam format ID objek Git (hash commit), di mana digunakan untuk pengalamatan konten bukan keamanan, dan dalam checksum perangkat lunak warisan. Proyek Git menambahkan dukungan format objek SHA-256 di versi 2.29 (Oktober 2020). Semua proyek baru harus menggunakan SHA-256 atau yang lebih kuat.

Alat ini menghitung SHA-1 sepenuhnya di browser Anda menggunakan crypto.subtle.digest('SHA-1', ...) dari Web Crypto API. Output hex 40 karakter identik dengan yang dihasilkan sha1sum, openssl dgst -sha1, atau git hash-object. Tidak ada byte yang dikirim ke server mana pun.

SHA-1 vs keluarga SHA-2: SHA-1 menghasilkan 40 karakter hex (160 bit). SHA-256 menghasilkan 64 karakter hex (256 bit) dan tidak memiliki kelemahan yang diketahui. MD5 menghasilkan 32 karakter hex (128 bit) dan diretakkan lebih awal (2004). Untuk pekerjaan hashing baru, SHA-256 adalah pilihan standar.

// Hash text using Web Crypto API (SHA-1 — legacy use only)
async function sha1(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest('SHA-1', data);
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

await sha1('Hello, World!');
// → '0a0a9f2a6772942557ab5355d76af442f8f65e01'
// ⚠️ SHA-1 is broken — use SHA-256 for new work.

Contoh SHA-1

Cari sidik jari commit Git

tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
author A Dev <dev@example.com> 1716854400 +0000
committer A Dev <dev@example.com> 1716854400 +0000

Initial commit

Git menyimpan setiap commit sebagai blob yang SHA-1-nya dihitung dari header commit plus isi dalam format persis ini. String hex 40 karakter yang ditampilkan `git log` adalah sidik jari SHA-1 langsung. Tempel teks objek commit mentah di sini untuk mereproduksi hash yang sama — berguna saat men-debug output `git cat-file` atau memverifikasi repositori cermin tidak memanipulasi riwayat. Catatan: Git 2.29+ mendukung mode SHA-256 (git init --object-format=sha256), dan GitHub akhirnya akan bermigrasi. Untuk repositori baru, gunakan mode SHA-256.

Verifikasi sidik jari sertifikat TLS lama

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKlL...
-----END CERTIFICATE-----

Sebelum 2017, browser menampilkan sidik jari sertifikat sebagai string hex SHA-1 40 karakter. CA berhenti menerbitkan sertifikat bertanda tangan SHA-1 pada Januari 2016, dan semua browser utama menghapus dukungan pada awal 2017. Jika Anda mengaudit sertifikat internal lama atau memvalidasi perangkat IoT warisan, tempel badan PEM di sini untuk mereproduksi sidik jari SHA-1. Alur kerja modern menggunakan sidik jari SHA-256 64-karakter.

Verifikasi unduhan perangkat lunak lama

node-v0.12.7-linux-x64.tar.gz

Beberapa arsip perangkat lunak lama masih hanya menerbitkan checksum SHA-1 bersama unduhan. Meski ini menyediakan deteksi korupsi dasar (bukan deteksi manipulasi), masih lebih baik daripada tidak ada checksum sama sekali. Gunakan tab File untuk memasukkan arsip, hitung SHA-1, lalu bandingkan dengan nilai yang diposting penerbit. Jika SHA-256 juga tersedia, selalu gunakan itu. Untuk arsip baru, desak checksum SHA-256 atau SHA-512.

Demonstrasi tabrakan SHAttered

(Tempel isi file shattered-1.pdf milik Google/CWI melalui tab File)

Pada Februari 2017 Google dan CWI Amsterdam merilis serangan SHAttered — tabrakan SHA-1 praktis pertama. Mereka menghasilkan dua file PDF berbeda (shattered-1.pdf dan shattered-2.pdf) yang menghasilkan nilai SHA-1 identik: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Memasukkan salah satu PDF ke tab File alat ini menghasilkan hash persis tersebut, membuktikan tabrakan nyata. Ini adalah bukti paling jelas mengapa SHA-1 telah dipecahkan. Gunakan SHA-256 untuk semua alur kerja integritas dokumen baru.

Cara Membuat Hash SHA-1

  1. 1

    Tempel teks atau masukkan file

    Pilih tab Teks dan tempel string apa pun — pesan commit, badan sertifikat, atau input checksum warisan — ke area input. Hash SHA-1 diperbarui saat Anda mengetik. Untuk file, beralih ke tab File dan seret file apa pun ke dropzone; browser meng-hash-nya secara lokal tanpa unggahan.

  2. 2

    Salin hash 40 karakter

    Klik tombol Salin di samping output hash. String hex lowercase 40 karakter penuh masuk ke clipboard Anda. Gunakan toggle Huruf Besar jika sistem warisan Anda memerlukan hex uppercase — beberapa alat lama dan Windows API default ke uppercase.

  3. 3

    Bandingkan dengan sidik jari warisan

    Beralih ke tab Bandingkan dan tempel dua hash SHA-1 secara berdampingan untuk mengonfirmasi apakah cocok. Berguna untuk memvalidasi checksum penerbit warisan, mengaudit repositori Git yang dicerminkan, atau memeriksa sidik jari sertifikat TLS lama dari dokumen sebelum adopsi SHA-256.

Detail Teknis

Algoritma: konstruksi Merkle-Damgård, 80 ronde
SHA-1 memproses input dalam blok 512-bit (64-byte), menerapkan 80 ronde operasi bitwise yang dikelompokkan dalam empat tahap 20-ronde, masing-masing dengan fungsi logika berbeda (Ch, Parity, Maj, Parity) dan konstanta aditif. Status hash awal adalah lima kata 32-bit (A–E), dan hash akhir adalah gabungan kata-kata tersebut setelah blok terakhir. Implementasi didefinisikan dalam FIPS 180-1 (1995), digantikan oleh FIPS 180-4 (2015).
Output: 160 bit, 40 karakter hex
Selalu persis 40 karakter heksadesimal lowercase (160 bit = 20 byte, dikodekan sebagai 2 karakter hex per byte). Panjang output tetap terlepas dari ukuran input. Dibandingkan dengan SHA-256 yang 64 karakter, output yang lebih pendek memberikan bit ketahanan tabrakan yang lebih sedikit — faktor kunci mengapa SHA-1 diretakkan sebelum SHA-256.
Performa: cepat tetapi itu bagian dari masalahnya
SHA-1 cepat — biasanya 400–700 MB/s di browser menggunakan Web Crypto. Bagi penyerang, kecepatan ini adalah aset: klaster GPU modern dapat menghitung miliaran hash SHA-1 per detik, mempercepat pencarian brute-force dan tabrakan. Kecepatan inilah mengapa SHA-1 (seperti MD5) tidak boleh pernah digunakan untuk penyimpanan kata sandi — gunakan bcrypt, scrypt, atau Argon2 sebagai gantinya.
Standar: FIPS 180-1 (1995) — dilarang dalam konteks FIPS 180-4
SHA-1 distandarkan dalam FIPS 180-1 (1995), menggantikan SHA-0 yang cacat. NIST men-deprecate SHA-1 untuk tanda tangan digital dalam NIST SP 800-131A (2011) dan dalam FIPS 186-5 (2023) secara resmi melarangnya untuk semua pembuatan tanda tangan digital. RFC 6194 (2011) mendokumentasikan pertimbangan keamanan yang diketahui. W3C WebCrypto API masih menyertakan SHA-1 untuk alasan interoperabilitas warisan, inilah cara alat browser ini dapat menghitungnya.

Praktik Terbaik

Jangan pernah gunakan SHA-1 untuk operasi yang sensitif terhadap keamanan
SHA-1 telah dilarang untuk tanda tangan digital, sertifikat TLS, penandatanganan kode, penyimpanan kata sandi, dan alur kerja apa pun di mana ketahanan tabrakan penting. Serangan SHAttered 2017 mendemonstrasikan tabrakan praktis. Untuk semua penggunaan keamanan, migrasikan ke SHA-256 atau SHA-3. Perbedaan biaya tidak signifikan pada hardware modern — SHA-256 dipercepat hardware di semua CPU saat ini.
SHA-1 untuk pencarian sidik jari warisan dapat diterima
Jika Anda perlu memverifikasi checksum file pra-2017, mencari ID commit Git, atau memeriksa sidik jari sertifikat lama untuk tujuan audit, SHA-1 adalah tepat. Hash itu sendiri tidak digunakan untuk membuat keputusan kepercayaan — Anda hanya mereproduksi sidik jari yang diketahui untuk referensi silang. Dokumentasikan ini secara eksplisit dalam log audit Anda: 'SHA-1 digunakan hanya untuk referensi warisan, bukan untuk validasi keamanan.'
Selalu hash byte UTF-8, bukan poin kode Unicode
SHA-1, seperti semua algoritma hash, beroperasi pada byte, bukan karakter. String yang sama dikodekan sebagai UTF-8 vs UTF-16 menghasilkan hash yang berbeda. Alat ini selalu mengkodekan input sebagai UTF-8 tanpa BOM sebelum hashing. Jika Anda perlu mencocokkan sistem yang menggunakan encoding berbeda (Windows UTF-16-LE, Latin-1), Anda harus melakukan pre-encode input secara eksternal sebelum membandingkan hash.
Gunakan perbandingan constant-time saat memverifikasi hash dalam kode
Jika Anda membandingkan dua hash SHA-1 dalam kode, gunakan pemeriksaan kesetaraan constant-time — crypto.timingSafeEqual() di Node.js, hmac.compare_digest() di Python — daripada kesetaraan string biasa (=== atau ==). Perbandingan naif membocorkan informasi timing yang secara teoritis memungkinkan penyerang merekonstruksi hash yang diharapkan byte-per-byte. Ini adalah langkah defense-in-depth bahkan untuk verifikasi SHA-1 warisan.

FAQ SHA-1

Apakah SHA-1 masih aman digunakan?
Tidak. SHA-1 secara teoritis dilemahkan pada 2005, dan pada Februari 2017 Google dan CWI Amsterdam mendemonstrasikan tabrakan praktis pertama melalui serangan SHAttered — dua file PDF berbeda dengan hash SHA-1 identik. NIST men-deprecate SHA-1 untuk tanda tangan digital pada 2011 (NIST SP 800-131A) dan semua browser dan CA utama berhenti menerima sertifikat SHA-1 pada 2017. SHA-1 telah dipecahkan untuk penggunaan yang sensitif terhadap keamanan. Untuk semua pekerjaan baru, beralih ke SHA-256.
Mengapa Git masih menggunakan SHA-1?
Git menggunakan SHA-1 untuk ID objek (hash commit, hash tree, hash blob) karena dirancang pada 2005 ketika SHA-1 masih dipercaya luas. Penggunaan Git bukan tanda tangan kriptografis — ini adalah skema pengalamatan konten yang digunakan untuk mendeteksi korupsi yang tidak disengaja, bukan manipulasi yang disengaja. Proyek Git telah bermigrasi sejak Git 2.29 (2020), yang menambahkan dukungan --object-format=sha256. GitHub dan forge besar secara bertahap meluncurkan mode SHA-256. Repositori yang ada dapat dikonversi, tetapi migrasinya kompleks karena miliaran ID commit yang ada.
Haruskah saya bermigrasi dari SHA-1 ke SHA-256?
Ya, untuk sistem yang sensitif terhadap keamanan. Daftar periksa migrasi konkret: (1) Sertifikat TLS — jika Anda masih memiliki sertifikat bertanda tangan SHA-1, ganti segera; CA tidak akan menerbitkan yang baru. (2) Tanda tangan API dan HMAC — ganti dengan HMAC-SHA-256. (3) Hash kata sandi yang disimpan sebagai SHA-1 — migrasikan ke bcrypt atau Argon2. (4) Checksum dokumen atau paket — terbitkan ulang dengan SHA-256. (5) Repositori Git — gunakan mode SHA-256 untuk repositori baru jika toolchain Anda mendukungnya.
Apa itu serangan SHAttered?
SHAttered (shattered.io, Februari 2017) adalah tabrakan SHA-1 praktis yang diproduksi oleh Google Security dan CWI Amsterdam. Serangan ini menelan biaya sekitar 110 GPU-tahun komputasi (~$110.000 USD dengan harga cloud 2017) dan menghasilkan dua file PDF berbeda yang menghasilkan hash SHA-1 yang sama: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Ini menghancurkan asumsi bahwa tabrakan SHA-1 hanya teoritis. Serangan ini bekerja dengan mengeksploitasi jalur diferensial dalam fungsi kompresi SHA-1. Pada 2020, biaya tabrakan SHA-1 chosen-prefix turun menjadi ~$45.000. Bandingkan dengan SHA-256, yang belum pernah ditemukan tabrakannya.
Apakah tabrakan SHA-1 bisa terjadi secara tidak sengaja?
Secara kebetulan menemukan tabrakan SHA-1 tanpa upaya yang disengaja masih sangat tidak mungkin — ada 2^160 kemungkinan nilai SHA-1, sehingga probabilitas tabrakan acak sekitar 1 banding 10^24 untuk dua input tertentu. Bahayanya bersifat adversarial: penyerang yang bertekad kini dapat membuat tabrakan dengan biaya sekitar $45.000. Korupsi tidak sengaja pada riwayat Git bukan ancaman nyata dari kelemahan SHA-1. Risiko nyata ada pada dokumen yang ditandatangani secara digital, sertifikat, dan alur kerja penandatanganan kode.
Apakah SHA-1 aman untuk penggunaan non-keamanan seperti checksum?
Untuk mendeteksi korupsi data yang tidak disengaja, SHA-1 secara teknis masih memadai. Namun, tidak ada alasan menggunakan SHA-1 bahkan untuk checksum non-keamanan saat ini, karena SHA-256 hanya sedikit lebih lambat (dipercepat hardware di semua CPU modern), didukung universal, dan tahan masa depan. Satu-satunya alasan sah menggunakan SHA-1 sekarang adalah interoperabilitas dengan sistem warisan yang hanya menerima sidik jari hex 40 karakter.
Seberapa panjang hash SHA-1?
Hash SHA-1 selalu persis 160 bit, direpresentasikan sebagai 40 karakter heksadesimal (2 karakter hex per byte × 20 byte). Panjang output tetap terlepas dari ukuran input. Bandingkan: MD5 menghasilkan 32 karakter hex (128 bit), SHA-256 menghasilkan 64 karakter hex (256 bit), dan SHA-512 menghasilkan 128 karakter hex (512 bit).
Apakah input saya dikirim ke server mana pun?
Tidak. SHA-1 dihitung sepenuhnya di browser Anda menggunakan Web Crypto API (crypto.subtle.digest('SHA-1', data)). Buka DevTools → tab Network saat melakukan hashing — Anda akan melihat nol permintaan keluar. File yang Anda masukkan dibaca melalui FileReader API dan di-hash secara lokal; byte tidak pernah meninggalkan mesin Anda. Jaminan privasi yang sama berlaku untuk generator SHA-256.
Mengapa output SHA-1 saya berbeda dari sha1sum di baris perintah?
Hampir selalu karena baris baru di akhir. Perintah shell echo 'hello' | sha1sum menyertakan baris baru (\n) setelah 'hello', sehingga ia meng-hash 'hello\n' bukan 'hello'. Gunakan echo -n 'hello' | sha1sum untuk menghapusnya. Penyebab umum lainnya: akhiran baris Windows (\r\n vs \n), UTF-8 BOM di awal file, atau perbedaan encoding (UTF-8 vs Latin-1). Alat ini mengkodekan input sebagai UTF-8 tanpa BOM sebelum hashing.