Kalkulator Checksum CRC32

Hitung checksum CRC-32 atau CRC-32C dari teks, byte hex, atau seluruh file, tampilkan sebagai hex, desimal, atau Base64, lalu bandingkan dengan nilai yang diharapkan. File dibaca secara lokal dan tidak pernah diunggah.

Semua algoritma

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Ketik atau tempel teks, atur Masukan sebagai ke Hex untuk byte mentah, atau klik Buka file untuk menghitung checksum isinya.
  2. Biarkan Algoritma pada CRC-32 untuk ZIP, gzip, dan PNG, atau pilih CRC-32C untuk iSCSI, ext4, Btrfs, dan Google Cloud Storage.
  3. Pada Keluaran sebagai, pilih hex (huruf kecil), HEX (huruf besar), Desimal, atau Base64.
  4. Untuk memverifikasi, tempel checksum yang diharapkan ke kolom Bandingkan dengan, dalam hex tanpa 0x, desimal, atau Base64.

Pengertian checksum CRC32

Cyclic redundancy check (CRC) memperlakukan masukan sebagai satu polinomial biner yang panjang, membaginya dengan polinomial pembangkit yang tetap, lalu menyimpan sisa pembagiannya. Untuk CRC-32, sisa ini berukuran 32 bit dan biasanya ditulis sebagai 8 digit hex atau sebagai bilangan tak bertanda dari 0 hingga 4.294.967.295. Hampir setiap perubahan pada data akan mengubah sisa tersebut.

CRC dirancang untuk jenis error yang benar-benar terjadi pada kabel, radio, dan disk. CRC-32 mendeteksi setiap rentetan (burst) bit rusak hingga sepanjang 32 bit, dan kerusakan acak hanya lolos tanpa terdeteksi sekitar sekali dalam 4,3 miliar kasus. CRC-32 juga sangat cepat dihitung, itulah sebabnya ia tertanam di ZIP, gzip, PNG, dan frame Ethernet.

CRC-32 dan CRC-32C

CRC-32CRC-32C (Castagnoli)
Polinomial0x04C11DB7, versi terbalik 0xEDB883200x1EDC6F41, versi terbalik 0x82F63B78
Nilai cek untuk 123456789cbf43926e3069283
Dipakai olehZIP, gzip, PNG, EthernetiSCSI, SCTP, metadata ext4, Btrfs, Google Cloud Storage
Dukungan perangkat kerasInstruksi CRC32 ARMv8Instruksi x86 SSE4.2 crc32, ARMv8

Keduanya dimulai dari 0xFFFFFFFF, memproses bit setiap byte mulai dari bit yang paling tidak signifikan, dan membalik semua bit nilai akhirnya; hanya polinomialnya yang berbeda, sehingga data yang sama menghasilkan dua nilai yang sama sekali tidak berkaitan. Yang pertama adalah yang dimaksud sebagian besar alat dengan "CRC32" dan dikatalogkan sebagai CRC-32/ISO-HDLC. CRC-32C kemudian diadopsi oleh protokol penyimpanan dan jaringan karena kemampuan deteksi error-nya lebih kuat. Google Cloud Storage melaporkan CRC-32C, dan Amazon S3 salah satu dari kedua varian, sebagai Base64 dari empat byte dalam urutan big-endian, persis seperti yang ditampilkan keluaran Base64.

Checksum, bukan pemeriksaan keamanan

CRC melindungi dari kerusakan yang tidak disengaja, bukan dari serangan. CRC adalah fungsi linear, sehingga siapa pun dapat mengubah sebuah file lalu menyesuaikan empat byte agar CRC-32-nya tetap sama. Karena itu, CRC yang cocok sama sekali tidak membuktikan bahwa data tidak dimanipulasi dengan sengaja. Untuk memeriksa unduhan, bandingkan hash SHA-256 dari sumber tepercaya; untuk membuktikan siapa pengirim pesan, gunakan HMAC.

32 bit juga terlalu sedikit untuk mengidentifikasi data. Di antara sekitar 77.000 file acak, peluang ada dua file dengan CRC-32 yang sama sudah mencapai 50%, jadi jangan gunakan CRC-32 sebagai ID unik atau kunci deduplikasi. Jika tidak ada penyerang yang terlibat, MD5 atau SHA-256 jauh lebih baik sebagai sidik jari data.

CRC32 dalam kode

# Python: zlib.crc32 tidak bertanda (unsigned) di Python 3;
# "& 0xffffffff" hanya diperlukan untuk Python 2
import zlib
format(zlib.crc32(b'123456789'), '08x')    # 'cbf43926'

// Node.js 20.15+ dan 22.2+
require('zlib').crc32('123456789').toString(16).padStart(8, '0')   // 'cbf43926'

// Go (import "hash/crc32")
crc32.ChecksumIEEE(data)                                   // CRC-32
crc32.Checksum(data, crc32.MakeTable(crc32.Castagnoli))    // CRC-32C

// Java: java.util.zip.CRC32, dan java.util.zip.CRC32C sejak Java 9

// PHP
sprintf('%08x', crc32('123456789'));   // 'cbf43926'
hash('crc32b', '123456789');           // 'cbf43926', CRC-32 yang sama
hash('crc32c', '123456789');           // 'e3069283'
hash('crc32', '123456789');            // '181989fc', CRC yang berbeda

Perhatikan penamaan di PHP: algoritma hash bernama crc32 bukanlah checksum ZIP, melainkan CRC yang dipakai oleh bzip2, yang ditampilkan dengan urutan byte terbalik. Gunakan crc32b atau fungsi crc32() agar hasilnya sesuai dengan ZIP, gzip, dan alat ini. Perintah Unix cksum memakai varian lain lagi yang juga ikut memperhitungkan panjang file, sehingga angkanya tidak akan cocok dengan keduanya.

Contoh

Masukan (UTF-8)CRC-32
Hello, World!ec4ac3d0
Base64.is915d7207
你好50a2b841

Pertanyaan yang sering diajukan

Berapa CRC32 dari "123456789"?
String ini adalah masukan uji standar untuk algoritma CRC. CRC-32-nya adalah cbf43926 (3421780262 dalam desimal) dan CRC-32C-nya adalah e3069283. Jika implementasi Anda sendiri mengembalikan nilai-nilai ini, berarti implementasi tersebut memakai parameter yang sama dengan alat ini.
Mengapa CRC32 saya berbeda dengan alat lain?
Periksa empat hal: varian (CRC-32, CRC-32C, CRC bzip2, dan cksum POSIX semuanya memberikan hasil berbeda), byte masukan (akhir baris, baris baru di akhir, pengodean teks), format angka (beberapa bahasa pemrograman mengembalikan bilangan bulat 32 bit bertanda, sehingga nilai yang besar menjadi negatif), dan urutan byte.
Mengapa byte CRC terbalik di dalam file ZIP atau gzip saya?
ZIP dan gzip menyimpan CRC-32 dalam urutan byte little-endian, sehingga editor hex menampilkan keempat byte tersebut dalam urutan terbalik dibandingkan notasi yang biasa. PNG menyimpannya dalam big-endian. Alat ini, unzip -v, dan sebagian besar program lain menampilkan byte paling signifikan terlebih dahulu.
Bisakah saya menghitung CRC32 dari file besar?

Bisa. Klik Buka file, lalu checksum akan dihitung dari byte file di perangkat Anda tanpa mengunggahnya; file apa pun yang dapat dimuat ke memori browser bisa diproses. Setelah itu, Anda dapat membandingkan hasilnya dengan nilai dalam file SFV atau daftar isi ZIP.

Apakah CRC32 termasuk fungsi hash?

CRC32 memetakan data dengan panjang berapa pun ke nilai 32 bit yang tetap, sehingga sering dicantumkan bersama hash, tetapi sebenarnya CRC32 adalah checksum: ia mendeteksi error yang tidak disengaja dan tidak memberi perlindungan terhadap orang yang sengaja mengubah data. Jika Anda memerlukan sidik jari yang lebih kuat, tabel Semua algoritma di bawah hasil menampilkan MD5 dan keluarga SHA untuk masukan yang sama.