4 Jan 2012

Cara mengetahui sebuah file telah berubah atau tidak dengan Visual Basic

Bila anda mempunyai sebuah file yang sangat penting tentu kita tidak ingin terjadinya perubahan – perubahan tanpa sepengetahuan kita terhadap file tersebut.Dalam tutorial kali ini kita akan membuat sebuah program sederhana untuk mengetahui apakah sebuah file telah termodifikasi atau tidak.Penjelasan sederhana mengenai metode yang akan kita gunakan dalam program ini adalah dengan menggunakan checksum. Checksum merupakan identitas dari sebuah file berdasarkan isinya. Bila kita menghitung checksum dari file yang identik maka hasilnya akan sama, jika file yang berbeda akan menghasilkan checksum yang berbeda. Algoritma checksum yang baik akan mendeteksi perubahan sekecil apapun terhadap file tersebut.
Buatlah sebuah Windows Form, letakkan dua buah TextBox control dan diberi nama txtFileInput dan txtChecksum,dan sebuah Button dengan nama btnHitungChecksum. Buat property ReadOnly pada txtChecksum menjadi True. Tambahkan label untuk memperjelas tampilan program.
Silahkan copy-paste coding berikut ini ke project anda

Imports System.Text
Imports System.Security.Cryptography
Public Class Form1
Private Sub btnHitungChecksum_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnHitungChecksum.Click
Dim checksum As Byte( )
Dim counter As Integer
Dim hasil As String
' ----- Hitung checksum untuk file.
Try
checksum = HitungFileChecksum(txtFileInput.Text)
Catch ex As Exception
MsgBox("Terjadi error saat " & _
"menghitung checksum:" & _
vbCrLf & vbCrLf & ex.Message)
Exit Sub
End Try
' ----- Menyiapkan checksum untuk ditampilkan.
If (checksum Is Nothing) Then
hasil = "Tidak ada checksum."
Else
' ----- Menyesuaikan checksum supaya lebih mudah dibaca
hasil = ""
For counter = 0 To checksum.Length - 1
hasil &= String.Format("{0:X2}", _
checksum(counter))
Next counter
End If
' ----- Tampilkan hasil checksum.
txtChecksum.Text = hasil
End Sub
Public Function HitungFileChecksum( _
ByVal filePath As String) As Byte( )
' ----- Menggunakan fungsi hash HMACSHA1
'       untuk memperhitungkan checksum dari sebuah file.
Dim fungsiHash As HMACSHA1
Dim dasarHash( ) As Byte
Dim nilaiHash( ) As Byte
Dim inputStream As IO.Stream
' ----- Memastikan file input ada.
If (My.Computer.FileSystem.FileExists(filePath) _
= False) Then
Throw New IO.FileNotFoundException
Return Nothing
End If
' ----- Mempersiapkan kunci hash. Anda harus menggunakan
'       kunci yang sama tiap kali memperhitungkan, jika tidak
'       hasil yang didapat akan berbeda.
dasarHash = (New UnicodeEncoding).GetBytes("chandra")
' ----- Membuat objek SHA.
fungsiHash = New HMACSHA1(dasarHash, True)
' ----- Membuka file sebgaia stream.
inputStream = New IO.FileStream(filePath, _
IO.FileMode.Open, IO.FileAccess.Read)
' ----- Memperhitungkan nilai checksum
nilaiHash = fungsiHash.ComputeHash(inputStream)
' ----- Menutup stream input
inputStream.Close( )
' ----- Mengembalikan nilai sebagai array Byte
Return nilaiHash
End Function
End Class

 
Untuk menggunakan program silahkan ketikkan lokasi file di txtFileInputn dan tekan btnHitungChecksum. Checksum dari file tersebut akan tampil di txtChecksum.

Checksum sangatlah berguna saat anda ingin mengetahui apakah dua buah file identik atau tidak, dan biasanya dihasilkan melalui algoritma hashing.
Didalam .NET Framework terdapat beberapa algoritma hashing dan enkripsi di namespace System.Security.Cryptography, dan yang kita gunakan adalah HMACSHA1 (Hash-based Message Authentication Code, atau HMAC melalui fungsi SHA1).

No comments:

Post a Comment

Garudayasa

Garudayasa