GNU/Linux >> Belajar Linux >  >> Linux

Cara Menghitung CRC Checksum di Linux menggunakan Perintah Cksum

Checksum digunakan untuk memverifikasi integritas data. Misalkan beberapa file sedang disalin melalui jaringan atau sistem dan karena beberapa kejadian seperti kehilangan koneksi jaringan atau mesin reboot tiba-tiba, data tidak disalin sepenuhnya.

Sekarang, bagaimana Anda memverifikasi integritas data? Nah, melalui mekanisme checksum CRC integritas data dapat diverifikasi. Ada berbagai mekanisme di mana checksum CRC dapat dihitung. Misalnya di salah satu artikel kami (jumlah cek header IP) kami membahas cara menemukan checksum header IP. Pada artikel ini, kita akan fokus pada perintah 'cksum' Linux yang digunakan untuk menghitung jumlah pemeriksaan file atau data yang diberikan pada input standar.

Apa itu CRC?

CRC adalah singkatan dari cyclic redundancy check.

Checksum dapat dihitung dengan menerapkan mekanisme cyclic redundancy check (CRC) atas data yang sedang dikomunikasikan. Setiap blok data yang melewati saluran komunikasi dilampirkan dengan kode CRC atau checksum dan ketika blok data mencapai tujuan, pemeriksaan ini diterapkan lagi untuk menghasilkan nilai checksum. Jika checksum yang dihasilkan di tempat tujuan dan nilai checksum di blok data sama maka data diyakini tidak rusak dan dapat digunakan lebih lanjut tetapi jika kedua nilai checksum tidak sama maka dalam hal ini data dikatakan rusak atau terinfeksi.

Nama CRC karena:

  • Mekanisme ini didasarkan pada dasar-dasar kode siklik (karenanya siklik ).
  • Kode yang dilampirkan dengan data sebagai checksum adalah redundan yaitu tidak menambah nilai pada data yang ditransfer (karenanya redundansi ).
  • Ini adalah tanda centang (karenanya periksa )

Perintah cksum

Perintah cksum digunakan untuk menghitung cyclic redundancy check (CRC) untuk setiap file yang disediakan sebagai argumen. CRC menjadi penting dalam situasi di mana integritas data perlu diverifikasi. Menggunakan perintah cksum, seseorang dapat membandingkan checksum file tujuan dengan file sumber untuk menyimpulkan apakah transfer data berhasil atau tidak.

Selain memberikan nilai CRC, perintah ini juga menghasilkan ukuran file dan nama file pada output. Perintah keluar dengan status nol jika berhasil dan nilai status lainnya menunjukkan kegagalan.

Seseorang dapat memperoleh informasi rinci tentang perintah ini dengan mengetikkan perintah berikut pada prompt perintah:

$ info coreutils 'cksum invocation'

contoh perintah cksum

1. Contoh dasar

Pada tingkat yang sangat dasar, perintah cksum dapat digunakan untuk menampilkan checksum untuk sebuah file.

$ cksum testfile.txt
3000792507 3 testfile.txt

Nilai pertama (angka besar) pada output di atas adalah checksum untuk file, kemudian kita memiliki ukuran file dan terakhir nama file.

2. Perubahan checksum dengan perubahan konten

File uji 'testfile.txt' memiliki konten berikut:

$ cat testfile.txt
Hi

Untuk menghitung checksum dari file pengujian, berikan sebagai argumen ke perintah cksum :

$ cksum testfile.txt
3000792507 3 testfile.txt

Sekarang, Ubah isi file :

$ cat testfile.txt
Hi everybody.

Sekali lagi berikan file tes sebagai argumen ke perintah cksum :

$ cksum testfile.txt
2559130041 14 testfile.txt

Jadi kita melihat bahwa dengan perubahan isi, checksum berubah.

3. Perubahan konten tidak selalu berarti menambah atau mengurangi ukuran

Nah hal di atas benar secara fundamental juga dan bahkan untuk chksum juga. Mari kita lihat apa artinya :

Periksa isi file uji 'testfile.txt' :

$ cat testfile.txt
Hi everybody

Perhatikan checksumnya :

$ cksum testfile.txt
2559130041 14 testfile.txt

Sekarang, ubah konten dengan tidak benar-benar menambah atau menghapus sesuatu tetapi dengan mengganti satu karakter dengan karakter lainnya agar ukuran file tetap sama.

$ cat testfile.txt
Hi everybudy.

Jadi seperti yang Anda lihat, saya mengganti 'o' dengan 'u'.

Bandingkan checksum sekarang:

$ cksum testfile.txt
3252191934 14 testfile.txt

Jadi kita melihat bahwa checksum berubah meskipun perubahan satu karakter diganti dengan karakter lainnya.

4. Salinan yang terputus

Misalkan Anda menyalin folder zip yang berisi berbagai sub-folder dan file dari satu lokasi ke lokasi lain dan karena alasan apa pun proses penyalinan terganggu, jadi bagaimana Anda memeriksa apakah semuanya berhasil disalin atau tidak? Nah, cksum memungkinkan karena sekarang kita tahu bahwa dalam kasus salinan sebagian, keseluruhan checksum tujuan akan berbeda dari folder sumber.

Anda dapat mensimulasikan skenario ini dengan cara berikut:

Saya membuat Linux.tar.gz dan Linux_1.tar.gz dari folder 'Linux' yang sama. Perbedaannya adalah bahwa Linux_1.tar.gz dibuat ketika folder 'Linux' berisi file teks tambahan.

Jadi skenario di atas disimulasikan ketika Linux_1.tar.gz sedang disalin tetapi terputus ketika hanya satu file teks yang tersisa untuk disalin di Linux.tar.gz target

Sekarang ketika saya membandingkan checksum dari kedua file ini, saya melihat

$ cksum Linux.tar.gz
756656601 1037079 Linux.tar.gz

$ cksum Linux_1.tar.gz
2598429125 1037184 Linux_1.tar.gz

Jadi output di atas menunjukkan nilai checksum yang berbeda yang menunjukkan salinan file yang salah.

5. Checksum keluaran standar

Perintah ini menyediakan fitur di mana pengguna dapat mengetik 'cksum' atau 'cksum-' dan menulis di stdin lalu tekan Ctrl+D beberapa kali. Dengan cara ini cksum memberikan checksum dari data yang dimasukkan pada input.

$ cksum
Lets check the checksum1135634677 23

Pada contoh di atas, kita sebenarnya menghitung checksum dari string “Lets check the checksum”.


Linux
  1. Cara Menyimpan Output Perintah ke File di Linux

  2. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  3. Cara Reboot Linux Menggunakan Command Line

  1. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  2. Cara membagi iso atau file menggunakan perintah 'split' di Linux

  3. Cara membuat file sparse di Linux menggunakan perintah 'dd'

  1. Perintah File Linux:Cara Menentukan Jenis File di Linux

  2. Cara Membuat File di Linux Menggunakan Terminal/Command Line

  3. Bagaimana cara melampirkan file menggunakan perintah mail di Linux?