CRC (Cyclic Redundancy Check)
CRC (Cyclic Redundancy Check) adalah algoritma untuk memastikan integritas data dan mengecek kesalahan pada suatu data yang akan ditransmisikan atau disimpan.
Data yang hendak ditransmisikan atau disimpan ke sebuah media penyimpanan rentan sekali mengalami kesalahan, seperti halnya noise yang terjadi selama proses transmisi atau memang ada kerusakan perangkat keras. Untuk memastikan integritas data yang hendak ditransmisikan atau disimpan, CRC dapat digunakan. CRC bekerja secara sederhana, yakni dengan menggunakan perhitungan matematika terhadap sebuah bilangan yang disebut sebagai Checksum, yang dibuat berdasarkan total bit yang hendak ditransmisikan atau yang hendak disimpan.Dalam transmisi jaringan, khususnya dalam jaringan berbasis teknologi Ethernet, checksum akan dihitung terhadap setiap frame yang hendak ditransmisikan dan ditambahkan ke dalam frame tersebut sebagai informasi dalam header atau trailer. Penerima frame tersebut akan menghitung kembali apakah frame yang ia terima benar-benar tanpa kerusakan, dengan membandingkan nilai frame yang dihitung dengan nilai frame yang terdapat dalam header frame. Jika dua nilai tersebut berbeda, maka frame tersebut telah berubah dan harus dikirimkan ulang.CRC didesain sedemikian rupa untuk memastikan integritas data terhadap degradasi yang bersifat acak dikarenakan noise atau sumber lainnya (kerusakan media dan lain-lain). CRC tidak menjamin integritas data dari ancaman modifikasi terhadap perlakukan yang mencurigakan oleh para hacker, karena memang para penyerang dapat menghitung ulang checksum dan mengganti nilai checksum yang lama dengan yang baru untuk membodohi penerima.Kode pendeteksian kesalahan yang paling umum serta paling hebat adalah Cyclic Redundancy Check (CRC) yang dapat digambarkan sebagai berikut, dengan adanya blok bit k-bit, atau pesan, transmitter mengirimkan suatu deretan n-bit, disebut sebagai Frame Check Sequence (FCS), sehingga frame yang dihasilkan, terdiri dari k+n bit, dapat dibagi dengan jelas oleh beberapa nomor yang sebelumnya sudah ditetapkan. Kemudian receiver membagi frame yang datang dengan nomor tersebut dan, bila tidak ada sisa, maka diasumsikan tidak terdapat kesalahan.Untuk menjelaskan hal tersebut, kita dapat menggunakan dua cara yaitu:a. Modulo 2 AritmatikModulo 2 aritmatik menggunakan penambahan biner tanpa pembawa, yang hanya merupakan operasi EX-OR saja. Pengurangan biner tanpa pembawa juga diterjemahkan sebagai operasi EX-OR.b. PolynomialsCara kedua mengamati proses CRC adalah dengan menyatakan seluruh nilai sebagai polynomial dalam suatu model variabel X, dengan koefisien-koefisien biner. Koefisien berhubungan dengan bit-bit dalam angka biner. Jadi, untuk M = 110011, kita peroleh M(X) = X5 + X4 + X + 1, dan untuk P = 11001, kita peroleh p (X) = X4 + X3 + 1.Error E(X) hanya akan menjadi tak terdeteksi bila dibagi dengan P(X). Hal ini bisa ditunjukkan bahwa semua kesalahan berikut ini tidak dibagi dengan pilihan P(X) yang sesuai dan karenanya mampu dideteksi:· Semua bit kesalahan tunggal· Semua bit kesalahan ganda, selama P(X) memiliki sedikitnya tiga 1s· Apapun angka kesalahan yang garijil, selama P(X) memuat faktor (X + 1)· Apapun banyaknya kesalahan dimana panjangnya kurang dari panjang polynomial pembagi; yakni, kurang dari atau setara dengan panjang FCS.· Kesalahan yang besar sekaliSelain itu, dapat pula ditunjukkan bahwa bila semua pola kesalahan dianggap sama, maka untuk kesalahan dari panjang r + 1, probabilitas dari kesalahan yang tak terdeteksi E (X) dibagi dengan p (X) l adalah 1/2r-1, dan untuk kesalahan yang lebih panjang, probabilitasnya adalah 1/2r-1, dimana r adalah panjang FCS.Empat versi P(X) yang telah digunakan secara luas adalah:CRC-12CRC-16CRC-CCITTCRC-32= X12 + X11 + X3 + X2 + X + 1= X16 + X15 + X2 + 1= X16 + X12 + X5 + 1= X32 + X26 + X23 + X22 + X16 + X 12 + X11+ X10 + X8 + X7 + X5 + X4 + X2 + X + 1Sistem CRC-12 dipergunakan untuk transmisi sederatan sebesar 6-bit karakter dan menbangkitkan 12-bit FCS. Baik CRC-16 maupun CRC-COTT populer untuk 8-bit karakter, masing-masing di Amerika Serikat dan Eropa, di mana keduanya sama-sama menghasilkan 16-bit FCS. Nampaknya ini sesuai untuk sebagian besar aplikasi, meskipun CRC-32 ditentukan sebagai salah satu pilihan untuk standar transmisi synchronous ujung-ke-ujung.
Sumber : rifza-ramadhan.blogspot.co.id