Algoritma One-Time Pad


Algoritma One-Time Pad 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.


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. Lakukan inisialisasi variabel dan kata kunci yang digunakan oleh metode ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

Dim otp As New OneTimePad(input)

* Skrip tersebut akan melakukan inisialisasi pada Class OneTimePad. Class ini berisi tentang fungsi-fungsi yang digunakan untuk melakukan enkripsi dan dekripsi. Pada saat obyek diinisialisasi, maka kata kunci akan dihasilkan secara otomatis untuk digunakan pada proses berikutnya. Deklarasi Class OneTimePad adalah sebagai berikut:

Class OneTimePad
    Public kataKunci() As Byte

    Public Sub New(ByVal input As String)
        Dim jumlahGenerate As Integer = 100
        Dim jumlahPengambilanByte As Integer = jumlahGenerate
        Dim byteAcak As Byte() = New Byte(jumlahGenerate - 1) {}
        Dim rng As New RNGCryptoServiceProvider()

        kataKunci = New Byte(input.Length - 1) {}
        Dim idxInput As Integer = 0

        Dim idxStart As Long = 0
        While idxStart <= input.Length
            rng.GetBytes(byteAcak)
            If (idxStart + jumlahGenerate) > input.Length Then
                jumlahPengambilanByte = Convert.ToInt32(input.Length - idxStart)
            End If

            For i As Integer = 0 To jumlahPengambilanByte - 1
                kataKunci(idxInput) = byteAcak(i)
                idxInput += 1
            Next

            idxStart += jumlahGenerate
        End While
    End Sub
	. . .
End Class

3. Lakukan enkripsi kalimat awal menggunakan algoritma ini
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

Dim hasilEnkripsi As String = otp.Encrypt(input)

* Skrip tersebut akan menjalankan proses enkripsi yang terdapat dalam Class OneTimePad.
Teknik yang digunakan adalah teknik padding / penambahan karakter pada masing-masing karakter sesuai kata kunci yang telah dihasilkan sebelumnya

Public Function Encrypt(src As String) As String
	Dim hasilEnkripsi(src.Length - 1) As Byte

	For i As Integer = 0 To src.Length - 1
		Dim tmp As Integer = AscW(src(i)) + kataKunci(i)
		If tmp > Byte.MaxValue Then tmp -= Byte.MaxValue
		hasilEnkripsi(i) = tmp
	Next

	'Konversi menjadi base64 agar hasil dapat digunakan dalam xml
	Return Convert.ToBase64String(hasilEnkripsi)
End Function

4. Lakukan dekripsi dari kalimat yang telah terenkripsi
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

Dim hasilDekripsi As String = otp.Decrypt(hasilEnkripsi)

* Skrip tersebut akan menjalankan proses dekripsi yang terdapat dalam Class DiffieHellman.
Teknik yang digunakan adalah teknik unpadding / pengurangan karakter pada masing-masing karakter sesuai kata kunci yang telah dihasilkan sebelumnya

Public Function Decrypt(src As String) As String
	Dim hasilEnkripsi() As Byte = Convert.FromBase64String(src)

	Dim hasilDekripsi(hasilEnkripsi.Length - 1) As Byte
	For i As Integer = 0 To hasilDekripsi.Length - 1
		Dim tmp As Integer = CInt(hasilEnkripsi(i)) - CInt(kataKunci(i))
		If tmp < Byte.MinValue Then tmp += Byte.MaxValue
		hasilDekripsi(i) = tmp
	Next

	'Konversi menjadi pesan semula
	Return Encoding.UTF8.GetString(hasilDekripsi.ToArray())
End Function

5. Langkah selanjutnya adalah menghancurkan kata kunci agar tidak dapat dipakai lagi
Proses ini tidak memiliki kegunaan dalam contoh ini karena proses enkripsi tidak dilakukan secara berulang
Jika terdapat proses-proses berikutnya, maka setiap kali selesai melakukan dekripsi, maka kata kunci harus dihancurkan

otp.kataKunci = New Byte() {}


Hasil akhir adalah: (klik untuk perbesar gambar)


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



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.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *