Sunday, November 23, 2008

Konsep CRC32

Apa itu CRC32 ? CRC kepanjangan dari Cyclic Redundancy Check .
CRC32 adalah sebuah fungsi pengecekan nilai suatu file berdasarkan titik-titik tertentu dalam 32 bit untuk menghasilkan nilai berbeda pada tiap file berupa nilai heksa .Nilai heksa yang dihasilkan akan berupa 8 angka (dalam heksa = 0-9 & A-F) .
CRC32 digunakan untuk melakukan pengecekan terhadap sebuah file yang sekarang apakah sama dengan nilai file asli . Biasanya file yang dikirimkan lewat e-mail atau di-download dari internet memakai deteksi ini, sehingga dapat diketahui apa file itu rusak atau tidak .
Berikut ini adalah source code CRC32 sederhana untuk pengecekan teks dengan Visual Basic 6 :
Buat sebuah form dengan 2 TextBox , text1 digunakan untuk memasukkan teks yang akan dicek dan text2 digunakan untuk mendapatkan nilai CRC32-nya .
Buat juga sebuah command button untuk menghasilkan nilai .
Tuliskan kode berikut
Option Explicit
Option Compare Text
Private CRC32Table(255) As Long
Private Sub command1_click()
Dim lCrc32Value As Long
On Error Resume Next
lCrc32Value = 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 Long
Dim iBytes, iBits As Integer
Dim lCrc32, lTempCrc32 As Long
On Error Resume Next
For iBytes = 0 To 255
lCrc32 = iBytes
For iBits = 0 To 7
lTempCrc32 = lCrc32 And &HFFFFFFFE
lTempCrc32 = lTempCrc32 \ &H2
lTempCrc32 = lTempCrc32 And &H7FFFFFFF
If (lCrc32 And &H1) <> 0 Then
lCrc32 = lTempCrc32 Xor Seed
Else
lCrc32 = lTempCrc32
End If
Next
CRC32Table(iBytes) = lCrc32
Next
InitCRC32 = Precondition
End Function
Public Function AddCrc32(ByVal Item As String, ByVal Crc32 As Long) As Long
Dim bCharValue As Byte
Dim iCounter As Integer
Dim lIndex, lAccValue, lTableValue As Long
On Error Resume Next
For iCounter = 1 To Len(Item)
bCharValue = Asc(Mid$(Item, iCounter, 1))
lAccValue = Crc32 And &HFFFFFF00
lAccValue = lAccValue \ &H100
lAccValue = lAccValue And &HFFFFFF
lIndex = Crc32 And &HFF
lIndex = lIndex Xor bCharValue
lTableValue = CRC32Table(lIndex)
Crc32 = lAccValue Xor lTableValue
Next
AddCrc32 = Crc32
End Function

Public Function GetCrc32(ByVal Crc32 As Long) As Long
On Error Resume Next
GetCrc32 = Crc32 Xor &HFFFFFFFF
End Function
Ada beberapa teknik pengecekan lagi selain CRC32, seperti MD5 ,SHA ,RIPEMD dan HAVAL . Teknik tersebut akan dibahas di tulisan selanjutnya .

1 comment:

Anonymous said...

Kalau untuk check file gimana ?