Algoritma 3DES (Triple Data Encryption Standard)

Algoritma 3DES (Triple Data Encryption Standard) 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.
Pada awal mulanya Algoritma DES (Data Encryption Standard) dirancang dengan menggunakan key berukuran 56 bit, dan ukuran tersebut dirasa cukup untuk menjalankan teknik enkripsi yang aman. Tetapi seiring berjalannya waktu, maka kemampuan perhitungan komputer semakin bertambah sehingga menjadikan cara membobol keamanan data dengan cara brute force menjadi lebih mungkin untuk dilakukan. Algoritma ini menyediakan solusi sederhana tanpa perlu menciptakan algoritma yang baru, yaitu menjalankan Algoritma DES (Data Encryption Standard) sebanyak 3 kali untuk masing-masing blok data. Proses tersebut menyebabkan ukuran key bertambah dari 56 bit menjadi 168 bit, dan menjadikan algoritma ini lebih aman dibanding pendahulunya


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 xc As New CryptCore()
xc.InitCore()
xc.Key = kataKunci

* Skrip tersebut akan melakukan inisialisasi pada Class CryptCore. Class ini adalah inti class untuk pemanggilan fungsi enkripsi dan dekripsi yang mengacu pada algoritma 3DES (Triple Data Encryption Standard). Deklarasi Class CryptCore adalah sebagai berikut:

Public Class CryptCore
    Private _key As String = Nothing
    Public Property Key() As String
        Get
            Return _key
        End Get
        Set(value As String)
            _key = Me.formatKey(value)
        End Set
    End Property

    Private Function formatKey(key As String) As String
        If key Is Nothing OrElse key.Length = 0 Then
            Return Nothing
        End If
        Return key.Trim()
    End Function

    Private DefaultKey As String = ""

    Public Sub New()
        DefaultKey = "enkripsi"
    End Sub

    Private _coreSymmetric As CoreAlgoritmaSymmetric

    Public Function InitCore() As Boolean
        _coreSymmetric = New CoreAlgoritmaSymmetric()
        Return True
    End Function
	
	. . .
End Class

* Pada saat melakukan proses InitCore, maka proses tersebut akan melakukan inisialisasi pada Class CoreAlgoritmaSymmetric. Pemanggilan fungsi enkripsi / dekripsi pada Class sebelumnya akan mengarah pada Class ini untuk selanjutnya dilakukan perhitungan enkripsi / dekripsi yang sebenarnya. Deklarasi Class CoreAlgoritmaSymmetric adalah sebagai berikut:

Public Class CoreAlgoritmaSymmetric
	Private metodeEncode As System.Security.Cryptography.SymmetricAlgorithm

	Public Sub New()
		metodeEncode = New System.Security.Cryptography.TripleDESCryptoServiceProvider()
	End Sub

	. . .
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 = xc.Encrypt(input)

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

Public Function ProsesEncrypt(Source As String, Key As String) As String
	If Source Is Nothing OrElse Key Is Nothing OrElse Source.Length = 0 OrElse Key.Length = 0 Then
		Return Nothing
	End If

	If metodeEncode Is Nothing Then
		Return Nothing
	End If

	Dim lPanjangStream As Long
	Dim jumlahBufferTerbaca As Integer
	Dim byteBuffer As Byte() = New Byte(2) {}
	Dim srcData As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(Source)
	Dim encData As Byte()
	Dim streamInput As New System.IO.MemoryStream()
	streamInput.Write(srcData, 0, srcData.Length)
	streamInput.Position = 0
	Dim streamOutput As New System.IO.MemoryStream()
	Dim streamEncrypt As System.Security.Cryptography.CryptoStream

	metodeEncode.Key = GetValidKey(Key)
	metodeEncode.IV = GetValidIV(Key, metodeEncode.IV.Length)

	streamEncrypt = New System.Security.Cryptography.CryptoStream(streamOutput, metodeEncode.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
	lPanjangStream = streamInput.Length

	Dim totalBufferTerbaca As Integer = 0
	While totalBufferTerbaca < lPanjangStream
		jumlahBufferTerbaca = streamInput.Read(byteBuffer, 0, byteBuffer.Length)
		streamEncrypt.Write(byteBuffer, 0, jumlahBufferTerbaca)
		totalBufferTerbaca += jumlahBufferTerbaca
	End While
	streamEncrypt.Close()

	encData = streamOutput.ToArray()

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

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

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

Public Function ProsesDecrypt(Source As String, Key As String) As String
	If Source Is Nothing OrElse Key Is Nothing OrElse Source.Length = 0 OrElse Key.Length = 0 Then
		Return Nothing
	End If

	If metodeEncode Is Nothing Then
		Return Nothing
	End If

	Dim lPanjangStream As Long
	Dim jumlahBufferTerbaca As Integer
	Dim byteBuffer As Byte() = New Byte(2) {}
	Dim encData As Byte() = Convert.FromBase64String(Source)
	Dim decData As Byte()
	Dim streamInput As New System.IO.MemoryStream(encData)
	Dim streamOutput As New System.IO.MemoryStream()
	Dim streamDecrypt As System.Security.Cryptography.CryptoStream

	metodeEncode.Key = GetValidKey(Key)
	metodeEncode.IV = GetValidIV(Key, metodeEncode.IV.Length)

	streamDecrypt = New System.Security.Cryptography.CryptoStream(streamInput, metodeEncode.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Read)
	lPanjangStream = streamInput.Length

	Dim totalBufferTerbaca As Integer = 0
	While totalBufferTerbaca < lPanjangStream
		jumlahBufferTerbaca = streamDecrypt.Read(byteBuffer, 0, byteBuffer.Length)
		If 0 = jumlahBufferTerbaca Then
			Exit While
		End If

		streamOutput.Write(byteBuffer, 0, jumlahBufferTerbaca)
		totalBufferTerbaca += jumlahBufferTerbaca
	End While
	streamDecrypt.Close()

	decData = streamOutput.ToArray()
	For i As Integer = 0 To decData.Length - 1
		If decData(i) < 8 Then decData(i) = 0
	Next

	Dim encodeASCII As New System.Text.ASCIIEncoding()
	Return encodeASCII.GetString(decData)
End Function


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd115a

cmd115b


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

[sdm_download id="2913" 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.

Comments

10 responses to “Algoritma 3DES (Triple Data Encryption Standard)”

  1. Ek Za Avatar

    bisa di jelaskan untuk proses enkripsi dan dekripsi manualnya ?

    1. pip Avatar
      pip

      Proses tersebut ssyangnya tidak dapat dijelaskan secara manual karena metode untuk enkripsi dan dekripsi bergantung pada fungsi bawaan yang disediakan oleh Visual Basic .NET sehingga tidak dapat diketahui proses apakah yang terjadi pada saat variabelnya digunakan.

      1. Ek Za Avatar

        Ooo begitu,,
        berapa kunci yang digunakan dalam algoritma ini ?

        1. pip Avatar
          pip

          Saya tidak memahami pertanyaan anda. Kata kunci sudah dideklarasikan sebelum proses perhitungan.

        2. Ek Za Avatar

          Dalam algoritma 3DES terdapat 3 option key :
          1. All three keys are independent.
          2. K1 and K2 are independent, and K3 = K1
          3. All three keys are identical, i.e. K1 = K2 = K3
          dan yang tanyakan dalam algoritma ini menggunakan option key yang mana ?

          1. pip Avatar
            pip

            Hal tersebut tidak diketahui pada skrip ini karena fungsi enkripsi / dekripsi menggunakan fungsi bawaan yang sudah disediakan oleh Visual Studio.

  2. Muhammad Ilyas Avatar
    Muhammad Ilyas

    berarti untuk enkrip metode 3DES ini tidak bisa dijelaskan manualnya gimana, tergantung fungsi bawaan yang disediakan visual basicnya ya gan

    1. pip Avatar
      pip

      Untuk algoritma ini betul seperti itu. Implementasi disini Hanya menggunakan fungsi yang sudah disediakan oleh perangkat lunak tersebut.

  3. Ikmal Avatar
    Ikmal

    Terimakasih Banyak Gan Sangat Membantu

    1. pip Avatar
      pip

      Sama sama. Semoga bermanfaat

Leave a Reply

Your email address will not be published. Required fields are marked *