Algoritma Diffie-Hellman


Algoritma Diffie-Hellman 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 dh As New DiffieHellman()

* Skrip tersebut akan melakukan inisialisasi pada Class DiffieHellman. 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 DiffieHellman adalah sebagai berikut:

Class DiffieHellman
    Private keyPengirim() As Byte
    Private keyPenerima() As Byte
    Private iv() As Byte

    Public Sub New()
        Using pengirim As New ECDiffieHellmanCng()
            pengirim.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash
            pengirim.HashAlgorithm = CngAlgorithm.Sha256
            Dim publicKeyPengirim() As Byte = pengirim.PublicKey.ToByteArray()

            Dim publicKeyPenerima() As Byte
            Using penerima As New ECDiffieHellmanCng()
                penerima.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash
                penerima.HashAlgorithm = CngAlgorithm.Sha256
                publicKeyPenerima = penerima.PublicKey.ToByteArray()
                keyPenerima = penerima.DeriveKeyMaterial(CngKey.Import(publicKeyPengirim, CngKeyBlobFormat.EccPublicBlob))
            End Using

            keyPengirim = pengirim.DeriveKeyMaterial(CngKey.Import(publicKeyPenerima, CngKeyBlobFormat.EccPublicBlob))
        End Using
    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 = dh.Encrypt(input)

* Skrip tersebut akan menjalankan proses enkripsi yang terdapat dalam Class DiffieHellman.

Public Function Encrypt(src As String) As String
	Dim hasil As String = ""
	hasil = ProsesEncrypt(src, iv)
	Me.iv = iv
	Return hasil
End Function

* Sedangkan proses enkripsi utama algoritma DiffieHellman adalah sebagai berikut

Public Function ProsesEncrypt(src As String, ByRef iv() As Byte) As String
	Dim hasilEnkripsi() As Byte

	Using aes As New AesCryptoServiceProvider()
		aes.Key = keyPengirim
		iv = aes.IV

		'Lakukan enkripsi pesan
		Using ciphertext As New MemoryStream()
			Using cs As New CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write)
				Dim plaintextMessage As Byte() = Encoding.UTF8.GetBytes(src)
				cs.Write(plaintextMessage, 0, plaintextMessage.Length)
				cs.Close()

				hasilEnkripsi = ciphertext.ToArray()
			End Using
		End Using
	End Using

	'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 = dh.Decrypt(hasilEnkripsi)

* Skrip tersebut akan menjalankan proses dekripsi yang terdapat dalam Class DiffieHellman.

Public Function Decrypt(src As String) As String
	Dim hasil As String = ""
	hasil = ProsesDecrypt(src, iv)
	Return hasil
End Function

* Sedangkan proses dekripsi utama algoritma DiffieHellman adalah sebagai berikut

Public Function ProsesDecrypt(src As String, iv() As Byte) As String
	Dim pesan As String = ""

	Using aes As New AesCryptoServiceProvider()
		aes.Key = keyPenerima
		aes.IV = iv

		'Lakukan dekripsi pesan
		Using plaintext As New MemoryStream()
			Using cs As New CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write)
				Dim encryptedMessage As Byte() = Convert.FromBase64String(src)
				cs.Write(encryptedMessage, 0, encryptedMessage.Length)
				cs.Close()

				pesan = Encoding.UTF8.GetString(plaintext.ToArray())
			End Using
		End Using
	End Using

	'Konversi menjadi base64 agar hasil dapat digunakan dalam xml
	Return pesan
End Function


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd155


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 *