TK TaskKit
Tools Developer

Generator Hash SHA-1

Hitung hash SHA-1 160-bit untuk teks atau file di browser kamu. Digunakan oleh git untuk ID commit dan oleh sertifikat lama. Dianggap deprecated untuk security; SHA-256 adalah pengganti modern.

Input
Hash
Paste teks untuk menghitung MD5, SHA-1, SHA-256, SHA-384, dan SHA-512.

Input tetap di perangkat ini. Setiap tool developer di TaskKit berjalan sepenuhnya di browser kamu. Token, payload, dan teks yang di-paste tidak ditransmisikan ke server TaskKit atau pihak ketiga.

Apa yang dilakukan tool ini

Menghitung hash SHA-1 dari teks atau file apapun di browser kamu, mengembalikan digest heksadesimal 40 karakter. SHA-1 adalah fungsi hash 160-bit yang dipublikasikan NIST pada 1995 (FIPS 180-1), dirancang oleh NSA. Sudah deprecated untuk tujuan keamanan: serangan collision praktis (« SHAttered ») didemonstrasikan oleh Google dan CWI Amsterdam pada 2017, dan collision chosen-prefix mengikuti pada 2019. SHA-1 tidak lagi dianggap aman secara kriptografis.

Di mana SHA-1 masih ada

  • ID objek git. Setiap commit, tree, dan blob git diidentifikasi oleh hash SHA-1-nya. Model objek git sedang bermigrasi ke SHA-256 (flag --object-format=sha256 ada), tapi SHA-1 tetap menjadi default untuk sebagian besar repository. Risiko collision untuk ID commit nyata tapi dikelola: GitHub dan forge lainnya men-deploy deteksi gaya SHAttered (library sha1dc) untuk menandai collision yang disiapkan.
  • Subversion (SVN). Penalaran yang sama dengan git, lebih sedikit upaya migrasi yang sedang berjalan.
  • Sertifikat TLS yang lebih lama. Browser berhenti mempercayai sertifikat yang ditandatangani SHA-1 pada 2017, tapi sistem legacy masih memproduksinya.
  • Kode yang ada yang meng-hash untuk alasan non-keamanan. Key cache, fingerprint, tabel deduplikasi — semua baik-baik saja.

Saat SHA-1 tidak cocok

  • Sertifikat TLS baru, sertifikat code-signing, atau signature dokumen. Gunakan SHA-256 atau SHA-384.
  • Penyimpanan password. Gunakan hash yang lambat dan ber-salt seperti bcrypt atau Argon2. SHA-1 terlalu cepat dan tidak dirancang untuk ini.
  • Apapun di mana attacker dapat memilih input. Attacker yang bertekad dengan cluster sewaan dapat menghasilkan collision SHA-1 dalam hitungan hari. Jika model keamanan kamu membiarkan attacker mempengaruhi apa yang di-hash, SHA-1 rusak.
  • Subresource Integrity (SRI). Browser akan menerima SHA-1 di atribut integrity, tapi spec merekomendasikan minimum SHA-256.

Vektor uji

Dari FIPS 180-2 dan suite referensi SHA-1:

  • String kosong ""da39a3ee5e6b4b0d3255bfef95601890afd80709
  • "abc"a9993e364706816aba3e25717850c26c9cd0d89d
  • "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"84983e441c3bd26ebaae4aa1f95129e5e54670f1
  • "The quick brown fox jumps over the lazy dog"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

Catatan

Mengapa 40 karakter? SHA-1 menghasilkan 160 bit = 20 byte. 20 byte × 2 karakter hex per byte = 40 karakter terlihat.

Mengapa git menggunakan SHA-1 jika rusak? Git menggunakan SHA-1 sebagai identifier content-addressable, bukan primitif keamanan. Model ancamannya adalah « dua object yang berbentuk baik tidak sengaja collide », yang masih sangat tidak mungkin secara astronomis. Model ancamannya bukan « attacker push commit jahat yang memiliki hash sama dengan commit asli kamu » — untuk itu, GitHub dll. menggunakan sha1dc untuk mendeteksi persiapan gaya SHAttered dan menolaknya. Migrasi ke SHA-256 sedang berjalan tapi lambat karena basis terinstal sangat besar.

Mengapa SHA-1 saya berbeda dari yang dikembalikan sha1sum? Newline trailing. echo "hello" | sha1sum menyertakan \n. Paste "hello" di sini tidak. Gunakan echo -n atau file picker.

Tools terkait

  • Generator hash — lima hash berdampingan
  • SHA-256 — pengganti modern untuk SHA-1
  • MD5 — pendahulu; bahkan lebih rusak menyeluruh