PROGAM DAN ALGORITMA CRC32 VB6

10
TUGAS JARINGAN SENSOR PROGAM DAN ALGORITMA CRC32 (Cyclic Redundancy Code) Oleh : Agus Apriantoro 1110121003 Dosen Pengampu : Ali Husein A, S.T. , M.Eng. PROGRAM STUDI DIPLOMA 4 TEKNIK ELEKTRONIKA DEPARTEMEN TEKNIK ELEKTRO

Transcript of PROGAM DAN ALGORITMA CRC32 VB6

TUGAS

JARINGAN SENSOR

PROGAM DAN ALGORITMA CRC32

(Cyclic Redundancy Code)

Oleh :

Agus Apriantoro

1110121003

Dosen Pengampu :

Ali Husein A, S.T. , M.Eng.

PROGRAM STUDI DIPLOMA 4

TEKNIK ELEKTRONIKA

DEPARTEMEN TEKNIK ELEKTRO

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

SURABAYA

2015

A. CRC321. FLOWCHART

2

Flowchrt diatas merupakan algoritma dari penghitunganlangsung untuk metode CRC 32. Pada algoritma ini yangpertama dilakukan adalah inisialisasi variabel padaregister dengan suatu nilai, dengan kata laininisialisasi CRC umumnya menggunakan bilangan hexayaitu FFFFFFFF. Dan inisialisasi polynomial standar CRCdalam hal ini menggunakan CRC 32 yaitu EDB88320 dalam

3

bilangan hexa juga. Setelah inisialisai langkahberikutnya adalah pembacaan bytes stream atau paketdata yang dikirimkan dari pengirim. Bytes stream inibisa dalam bentuk string. Maksudnya bahwa data yangdikirimkan dapat berupa kumpulan huruf dan / atau angkaserta kumpulan kata. Langkah selanjutnya adalahmenghitung nilai CRC sementara untuk setiap byte padabytes stream yang dikirimkan. Cara menghitung nilai CRCsementara itu adalah dengan melakukan operasi ’XOR’antara nilai CRC yang ada dengan nilai byte yang akanterkirim. Dan melakukan operasi ’AND’ dengan FF heksaatau 255. Lalu ulangi pembacaan byte yang akan terkirimsebanyak 8 kali, dengan nilai awal adalah i=0.Selanjutnya adalah mengoperasikan nilai CRC awal yangbernilai 1 dengan operasi ’AND’. Jika nilai CRCsementara bernilai 1 maka nilai CRC sementara tersebutdigeser ke kanan 1 bit kemudian nilai tersebut di ’XOR’dengan polynomial standar. Tetapi jika tidak bernilai1, maka nilai CRC sementara tersebut hanya digeser sajasebanyak 1 bit ke kanan. Setelah kedua kondisitersebut terpenuhi terlihat pada diagram alur di atasadanya penyatuan dua kondisi yang berbeda. Menandakanbahwa kedua kondisi tersebut akan diproses selanjutnya.Yaitu proses pembacaan variabel i, dimana adanya suatukondisi yang menggambarkan apakah i lebih besar dari 8.Kondisi ini menandakan bahwa pembacaan byte sudahdiulang sampai i kali. Karena pembacaan byte sebanyak 8kali, maka kondisi akan menanyakan ”apakah pembacaanatau variabel i lebih besar dari 8”, jika ”y” makapembacaan stream selesai, tetapi jika ”t” maka prosesselanjutnya adalah pembacaan variabel I kembali.

Source:http://repository.gunadarma.ac.id/1293/1/Algoritma%20Perhitungan%20Langsung%20pada%20Cyclic%20Redundancy%20Code%2032_UG.pdf

2. PROGAMMenggunakan VB6 listing progam ditampilkan dibawah dan tampilan seperti pada hasil:

Option ExplicitOption Compare TextPrivate CRC32Table(255) As Long

4

Private Sub command1_click()Dim lCrc32Value As LongOn Error Resume NextlCrc32Value = InitCRC32()lCrc32Value = AddCrc32(Text1.Text, lCrc32Value)Text2.Text = Hex$(GetCrc32(lCrc32Value))End Sub

Public Function InitCRC32(Optional ByVal Seed As Long = &HEDB88320, Optional ByVal Precondition As Long = &HFFFFFFFF) As LongDim iBytes, iBits As IntegerDim lCrc32, lTempCrc32 As LongOn Error Resume NextFor iBytes = 0 To 255lCrc32 = iBytesFor iBits = 0 To 7lTempCrc32 = lCrc32 And &HFFFFFFFElTempCrc32 = lTempCrc32 \ &H2lTempCrc32 = lTempCrc32 And &H7FFFFFFFIf (lCrc32 And &H1) <> 0 ThenlCrc32 = lTempCrc32 Xor SeedElselCrc32 = lTempCrc32End IfNextCRC32Table(iBytes) = lCrc32NextInitCRC32 = PreconditionEnd Function

Public Function AddCrc32(ByVal Item As String, ByVal Crc32 As Long) As LongDim bCharValue As ByteDim iCounter As IntegerDim lIndex, lAccValue, lTableValue As LongOn Error Resume NextFor iCounter = 1 To Len(Item)bCharValue = Asc(Mid$(Item, iCounter, 1))lAccValue = Crc32 And &HFFFFFF00lAccValue = lAccValue \ &H100lAccValue = lAccValue And &HFFFFFFlIndex = Crc32 And &HFFlIndex = lIndex Xor bCharValuelTableValue = CRC32Table(lIndex)Crc32 = lAccValue Xor lTableValueNextAddCrc32 = Crc32End Function

5

Public Function GetCrc32(ByVal Crc32 As Long) As LongOn Error Resume NextGetCrc32 = Crc32 Xor &HFFFFFFFFEnd Function

B. PROGAM DARI INTERNETC. HASIL

6

7

Hasil Pengujian

Source : http://rockess-blog.blogspot.com/2008/11/konsep-crc32.html

D. ANALISASetelah pengambilan pengujian 3 data untuk nama dan 1data NRPdidapatkan hasil output yang berbeda yangberbeda, namun bahwa hasil CRC32 yang dihasilkandenganmenggunakan kedua progam tersebut adalah sama.Terlihat juga dengan menggunakan input data yang sama,tetapi dengan format penulisan yang berbeda ternyatahasil CRC-nya pun berbeda. Ini disebabkan karena kodeASCII antara hurufbesar dan kecil berbeda. Terutama untuk nama.

PESAN : 1101 0011 1011 00

CRC 3 BIT (PEMBAGI 4 BIT) : 1011

DATA KIRIM : PESAN + CRC

1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 DATA

8

1 0 1 1 0 0 0 DIVISOR

0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 RESULT (EX

OR)

1 0 1 1 0 0 0 DIVISOR

0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 RESULT (EX

OR)

9

1 0 1 1 0 0 DIVISOR

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 RESULT (EX

OR)

10