SHA-1 Hash Generator

Hasilkan hash SHA-1 dari teks apa pun

Teks Input

Berjalan lokal · Aman untuk menempel rahasia

Hash SHA-1

Hash SHA-1 akan muncul di sini…

Apa itu Hashing SHA-1?

SHA-1 (Secure Hash Algorithm 1) adalah fungsi hash kriptografis yang menghasilkan digest tetap 160-bit (20-byte) dari input apa pun. Diterbitkan oleh NSA dan distandarisasi oleh NIST pada tahun 1995 sebagai FIPS PUB 180-1, lalu didokumentasikan dalam RFC 3174, SHA-1 dirancang sebagai penerus yang lebih kuat dari SHA-0 dan MD5. Algoritma ini memproses input dalam blok 512-bit melalui 80 putaran operasi bitwise, menghasilkan sidik jari heksadesimal 40 karakter yang menjadi tulang punggung SSL/TLS, PGP, SSH, dan IPsec selama lebih dari satu dekade.

Seperti semua fungsi hash kriptografis, SHA-1 adalah transformasi satu arah: menghitung hash dari input berjalan cepat, tetapi memulihkan input dari hash saja tidak layak secara komputasi. Perubahan satu bit pada input menghasilkan digest 160-bit yang sama sekali berbeda — properti yang disebut efek avalanche. SHA-1 memetakan ruang input yang berukuran sembarang ke output 160-bit tetap, yang berarti tabrakan (dua input berbeda yang menghasilkan hash yang sama) harus ada secara matematis. Klaim keamanan sebuah fungsi hash adalah bahwa menemukan tabrakan tersebut seharusnya memerlukan sekitar 2^80 operasi — setengah dari panjang bit output.

Pada tahun 2017, Google dan CWI Amsterdam mempublikasikan serangan SHAttered, membuktikan tabrakan SHA-1 pertama yang praktis dengan menghasilkan dua file PDF berbeda dengan digest yang sama. Serangan itu membutuhkan sekitar 2^63.1 komputasi SHA-1 — jauh di bawah batas teoritis 2^80. Pada tahun 2020, Gaetan Leurent dan Thomas Peyrin lebih jauh mengurangi biayanya dengan serangan tabrakan chosen-prefix yang membutuhkan sekitar 2^63.4 operasi. Akibatnya, semua browser utama, otoritas sertifikat, dan badan standar telah menghentikan penggunaan SHA-1 untuk tanda tangan digital dan sertifikat TLS. Namun, SHA-1 tetap aktif digunakan untuk keperluan non-keamanan: ID objek Git (meski Git sedang bermigrasi ke SHA-256), konstruksi HMAC lama, dan checksum integritas file di mana resistansi tabrakan terhadap penyerang tidak diperlukan.

Mengapa Menggunakan Generator SHA-1 Ini?

Hasilkan hash SHA-1 secara instan tanpa menginstal apapun atau menulis kode. Tempel teks Anda dan dapatkan digest hex 40 karakter secara real time — berguna untuk memverifikasi checksum lama, men-debug internal Git, atau menguji alur kerja berbasis hash.

Hashing Instan
Output diperbarui saat Anda mengetik. Tidak ada klik tombol, tidak perlu menunggu — digest SHA-1 muncul karakter demi karakter saat Anda mengubah input.
🔒
Pemrosesan yang Mengutamakan Privasi
Semua hashing berjalan secara lokal di browser Anda menggunakan Web Crypto API. Teks input Anda tidak pernah meninggalkan perangkat dan tidak pernah dikirim ke server mana pun.
📋
Salin dengan Satu Klik
Salin hash ke clipboard dengan satu klik. Beralih antara output hex huruf kecil dan huruf besar sesuai format yang diharapkan sistem Anda.
🔍
Tidak Perlu Akun
Tidak perlu daftar, tidak perlu login, tidak ada batas penggunaan. Buka halaman dan langsung mulai hashing. Bekerja di perangkat apa pun dengan browser modern.

Kasus Penggunaan SHA-1

Internal Git & Debugging
Git mengidentifikasi setiap objek (commit, tree, blob, tag) dengan hash SHA-1-nya. Saat men-debug perintah plumbing Git, memverifikasi pack file, atau menulis tooling Git kustom, generator SHA-1 yang cepat membantu Anda memvalidasi ID objek terhadap nilai yang diharapkan.
Verifikasi Sistem Lama
Banyak sistem lama, registry paket, dan mekanisme pembaruan firmware masih mempublikasikan checksum SHA-1 bersama unduhan. Hasilkan dan bandingkan hash SHA-1 untuk memverifikasi integritas file ketika digest SHA-256 tidak tersedia.
Subresource Integrity (SRI)
Meskipun sha256 dan sha384 lebih disukai untuk hash SRI dalam tag script dan link HTML, beberapa konfigurasi CDN lama masih mengandalkan SHA-1. Hasilkan digest yang diharapkan untuk mengaudit atau mengalihkan atribut SRI yang sudah ada.
QA & Pengujian Regresi
Bandingkan hash SHA-1 dari respons API, artefak build, atau snapshot database antar test run untuk mendeteksi perubahan tak terduga tanpa melakukan diff byte-per-byte penuh pada output yang besar.
Deduplikasi Data
Hitung hash SHA-1 dari konten file atau record data dalam pipeline ETL untuk mengidentifikasi duplikat. Output 160-bit memberikan jaminan keunikan yang lebih kuat dari MD5 untuk skenario deduplikasi non-adversarial.
Pembelajaran & Pendidikan
SHA-1 adalah algoritma yang terdokumentasi dengan baik dengan literatur akademik yang luas. Bereksperimen dengannya untuk memahami konstruksi Merkle-Damgard, penjadwalan pesan, dan mengapa resistansi tabrakan gagal ketika panjang output terlalu pendek relatif terhadap kekuatan komputasi modern.

SHA-1 vs Algoritma Hash Lainnya

SHA-1 menghasilkan digest 160-bit — lebih panjang dari MD5 (128 bit) tetapi jauh lebih pendek dari algoritma keluarga SHA-2. Tabel di bawah membandingkan ukuran digest, standar, dan kasus penggunaan yang tepat untuk setiap algoritma.

AlgoritmaUkuran DigestPanjang HexStandarTerbaik untuk
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

Cara Kerja SHA-1

SHA-1 mengikuti konstruksi Merkle-Damgard: pesan dipadding, dibagi menjadi blok 512-bit, dan setiap blok diproses melalui 80 putaran operasi bitwise yang mencampur input dengan jadwal pesan yang diturunkan dari blok. Lima kata status 32-bit (H0 hingga H4) membawa status hash yang sedang berjalan, dan penggabungan akhir kata-kata ini menghasilkan digest 160-bit.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
LangkahDeskripsi
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.

Perbedaan utama antara SHA-1 dan MD5 adalah jumlah kata status (5 vs. 4), jumlah putaran per blok (80 vs. 64), dan penggunaan jadwal pesan dengan umpan balik left-rotate. Perbedaan ini memberi SHA-1 output yang lebih besar (160 vs. 128 bit) dan awalnya memberikan margin keamanan yang lebih tinggi, meskipun kedua algoritma kini dianggap rusak untuk resistansi tabrakan.

Contoh Kode

Cara menghasilkan hash SHA-1 dalam bahasa dan lingkungan yang populer. Berbeda dengan MD5, SHA-1 tersedia di Web Crypto API browser, sehingga dapat digunakan tanpa library eksternal di lingkungan browser maupun 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

Pertanyaan yang Sering Diajukan

Apakah SHA-1 masih aman digunakan?
SHA-1 tidak aman untuk aplikasi yang sensitif terhadap keamanan. Serangan SHAttered tahun 2017 membuktikan pembuatan tabrakan secara praktis, dan serangan chosen-prefix tahun 2020 lebih jauh menurunkan biayanya. Untuk tanda tangan digital, sertifikat TLS, atau skenario apa pun di mana penyerang dapat membuat input yang bertabrakan, gunakan SHA-256 atau SHA-3. Untuk keperluan non-keamanan seperti checksum dan cache key di mana tidak ada penyerang yang mengontrol input, SHA-1 tetap berfungsi.
Apa perbedaan antara SHA-1 dan SHA-256?
SHA-1 menghasilkan digest 160-bit (40 karakter hex) dan rentan terhadap serangan tabrakan. SHA-256 menghasilkan digest 256-bit (64 karakter hex) dan termasuk dalam keluarga SHA-2, yang tidak memiliki serangan praktis yang diketahui. SHA-256 sekitar 20-30% lebih lambat dari SHA-1 pada hardware yang sama, tetapi 96 bit output tambahan dan tidak adanya kelemahan struktural yang diketahui menjadikannya rekomendasi default untuk proyek baru apa pun.
Mengapa Git menggunakan SHA-1?
Ketika Linus Torvalds merancang Git pada tahun 2005, SHA-1 dianggap aman dan menawarkan keseimbangan yang baik antara kecepatan dan resistansi tabrakan untuk penyimpanan yang dapat dialamatkan berdasarkan konten. Git menggunakan SHA-1 sebagai pengenal konten, bukan mekanisme keamanan — ini mendeteksi kerusakan yang tidak disengaja, bukan gangguan yang disengaja. Sejak 2021, Git telah bertransisi ke SHA-256 melalui kerangka ekstensi hash yang dijelaskan dalam rencana git-hash-function-transition.
Bisakah hash SHA-1 dikembalikan ke input aslinya?
Tidak. SHA-1 adalah fungsi satu arah yang membuang informasi selama proses hashing. Untuk input yang pendek atau umum, penyerang dapat menggunakan rainbow table atau pencarian brute-force untuk menemukan teks aslinya, tetapi ini bukan pembalikan algoritma — ini adalah pencarian menyeluruh dari ruang input. Untuk kata sandi, gunakan bcrypt, scrypt, atau Argon2 sebagai pengganti fungsi hash yang cepat.
Bagaimana cara kerja serangan SHAttered?
Serangan SHAttered mengeksploitasi kelemahan struktural dalam fungsi kompresi SHA-1. Dengan membuat dua blok pesan 512-bit berbeda yang menghasilkan status hash perantara yang sama, para penyerang membuat dua file PDF dengan digest SHA-1 yang identik tetapi konten yang berbeda. Serangan tersebut membutuhkan sekitar 2^63 komputasi SHA-1 — sekitar 6.500 tahun waktu CPU tunggal, tetapi dapat dilakukan pada klaster GPU dalam beberapa bulan. Biayanya telah turun lebih jauh dengan teknik yang ditingkatkan.
Apa perbedaan antara SHA-1 dan HMAC-SHA1?
SHA-1 adalah fungsi hash biasa: hash = SHA1(pesan). HMAC-SHA1 adalah kode autentikasi pesan berbasis kunci: mac = HMAC(kunci, pesan). HMAC membungkus fungsi hash dalam konstruksi yang mencegah serangan length-extension dan memerlukan kunci rahasia. Menariknya, HMAC-SHA1 tetap dianggap aman untuk autentikasi pesan meskipun SHA-1 sendiri sudah rusak untuk resistansi tabrakan, karena keamanan HMAC bergantung pada properti fungsi pseudoacak dari fungsi kompresi, bukan pada resistansi tabrakan.
Haruskah saya menggunakan SHA-1 atau MD5 untuk checksum file?
SHA-1 adalah pilihan yang lebih baik dari MD5 untuk checksum file. MD5 menghasilkan digest 128-bit dan telah rusak sejak 2004, dengan serangan tabrakan praktis yang kini dapat dijalankan dalam hitungan detik. SHA-1 menghasilkan digest 160-bit dan serangan tabrakannya, meski telah terbukti, tetap lebih mahal. Namun, untuk sistem baru apa pun, lebih baik gunakan SHA-256 — menyediakan digest 256-bit tanpa serangan praktis yang diketahui dan didukung dengan baik di semua platform dan bahasa.