Algoritma TEA (Tiny Encryption Algorithm) adalah salah satu algoritma yang dapat digunakan untuk melakukan enkripsi data sehingga data asli hanya dapat dibaca oleh seseorang yang memiliki kunci enkripsi tersebut. Contoh yang dibahas kali ini adalah mengenai enkripsi dan dekripsi dari sebuah kalimat.
Algoritma ini menggunakan teknik cipher blok dengan key. TEA memiliki ukuran blok 32 bit unsigned (yang dapat diperoleh dari blok data 64 bit) dan menggunakan ukuran key 128 bit. Algoritma ini menggunakan jaringan Feistel dengan jumlah round yang direkomendasikan adalah 64 kali.
Langkah-langkah penggunaan algoritma ini adalah
1. Tentukan kalimat yang akan dienkrip
Console.WriteLine("Masukkan kalimat yang akan dienkrip: ") Dim input As String = Console.ReadLine
2. Tentukan kata kunci enkripsi yang digunakan
Console.WriteLine("Masukkan kata kunci enkripsi: ") Dim kataKunci As String = Console.ReadLine
3. Lakukan inisialisasi variabel yang digunakan oleh metode ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
Dim t As New TEA()
* Skrip tersebut akan melakukan inisialisasi pada Class TEA. Class ini berisi tentang fungsi-fungsi yang digunakan untuk melakukan enkripsi dan dekripsi. Deklarasi Class TEA adalah sebagai berikut:
Public Class TEA . . . End Class
4. Lakukan enkripsi kalimat awal menggunakan algoritma ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
Dim hasilEnkripsi As String = t.Encrypt(input, kataKunci)
* Skrip tersebut akan menjalankan proses enkripsi yang terdapat dalam Class TEA.
Public Function Encrypt(input As String, Key As String) As String If input.Length = 0 Then Throw New ArgumentException("Data harus memiliki setidaknya 1 karakter.") End If Dim formattedKey As UInteger() = FormatKey(Key) 'Pastikan input memiliki panjang yang berjumlah genap dengan menambahkan karakter null If input.Length Mod 2 <> 0 Then input += ControlChars.NullChar End If Dim byteInput As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input) Dim cipher As String = String.Empty Dim tempData As UInteger() = New UInteger(1) {} For i As Integer = 0 To byteInput.Length - 1 Step 2 tempData(0) = byteInput(i) tempData(1) = byteInput(i + 1) encode(tempData, formattedKey) cipher += UIntToStr(tempData(0)) + UIntToStr(tempData(1)) Next Return cipher End Function
* Sedangkan proses enkripsi utama algoritma TEA adalah sebagai berikut
Private Sub encode(v As UInteger(), k As UInteger()) Dim y As UInteger = v(0) Dim z As UInteger = v(1) Dim sum As UInteger = 0 Dim delta As UInteger = &H9E3779B9UI Dim n As UInteger = 32 While n > 0 sum += delta y += (z << 4) + k(0) Xor z + sum Xor (z >> 5) + k(1) z += (y << 4) + k(2) Xor y + sum Xor (y >> 5) + k(3) n -= 1 End While v(0) = y v(1) = z End Sub
5. Lakukan dekripsi dari kalimat yang telah terenkripsi
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
Dim hasilDekripsi As String = t.Decrypt(hasilEnkripsi)
* Skrip tersebut akan menjalankan proses dekripsi yang terdapat dalam Class TEA.
Public Function Decrypt(input As String, Key As String) As String Dim formattedKey As UInteger() = FormatKey(Key) Dim x As Integer = 0 Dim tempData As UInteger() = New UInteger(1) {} Dim byteInput As Byte() = New Byte(input.Length / 8 * 2 - 1) {} For i As Integer = 0 To input.Length - 1 Step 8 tempData(0) = StrToUint(input.Substring(i, 4)) tempData(1) = StrToUint(input.Substring(i + 4, 4)) decode(tempData, formattedKey) byteInput(x) = CByte(tempData(0)) x += 1 byteInput(x) = CByte(tempData(1)) x += 1 Next 'Hilangkan karakter null jika sebelumnya telah ditambahkan Dim cipher As String = System.Text.ASCIIEncoding.ASCII.GetString(byteInput, 0, byteInput.Length) If cipher(cipher.Length - 1) = ControlChars.NullChar Then cipher = cipher.Substring(0, cipher.Length - 1) End If Return cipher End Function
* Sedangkan proses dekripsi utama algoritma TEA adalah sebagai berikut
Private Sub decode(v As UInteger(), k As UInteger()) Dim y As UInteger = v(0) Dim z As UInteger = v(1) Dim sum As UInteger Dim delta As UInteger = &H9E3779B9UI Dim n As UInteger = 32 sum = delta << 5 While n > 0 z -= (y << 4) + k(2) Xor y + sum Xor (y >> 5) + k(3) y -= (z << 4) + k(0) Xor z + sum Xor (z >> 5) + k(1) sum -= delta n -= 1 End While v(0) = y v(1) = z End Sub
Hasil akhir adalah: (klik untuk perbesar gambar)
Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:
[sdm_download id=”2953″ fancy=”0″]
Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.
Leave a Reply