Acak Kata (Enkripsi - Decripsi) dengan teknik Tripledes pada Microsoft Excel Macro (VBA)

Huy guuyysss (pake nadanya cak lontong di iklan sprite***)(map sensornya telat maksudnya ***sprite)(skrg kecepatan.. bodo amat lah)

****  *********** ******* *********** ** ***** ******** *********** ****** ******** ****** ****** * **********(skrg malah semua tulisan gue yang ke sensor) hahaa lanjut..

Kali ini saya akan posting coding yang berkaitan dengan Cryptography Tripledes dengan menggunakan tentunya Microsoft Excel Macro (VBA).



Apa itu Kriptografi (Cryptography)?

Kriptografi (Cryptography) adalah suatu ilmu yang mempelajari algoritma matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data dan lain- lain ya.. pokoknya tentang keamanan hahahaa... lebih lengkapnya bias dicek disini

Apa itu Tripledes?

Tripledes adalah salah satu sistem enkripsi berlapis tiga dari sistem yang sebelumnya sudah ada, yaitu DES (Data Encryption Standard). Triple DES lebih aman dari DES, karena mengalami enkripsi tiga kali. Tau kan gue.. iya lah copy-an dari Wikipedia hahahaa lebih lengkapnya klik disini ya

Sudah lah.. langsung saya.. kita sambit.. hhaaa

  • Buka Microsoft Excel
  • Buka VBA Editor. Ketikan atau pastekan atau apalah - apalah codingan berikut


       

Option Explicit
' set KEY nya.. ini digunakan untuk enkrip dan dekrip data
' key harus kelipatan 8
Private Const KEY_TRIPLEDES As String = "jayalahindonesia"

' set IV(Initialization vector) nya..
' saya kurang paham apa itu.. mereka juga sering menyebut starting vector tapi saya kurang tahu..
Private Const IV_TRIPLEDES As String = "garuda01"

Private Function EncryptData(ByVal plain_text As String) As String
 ' deklarasi object untuk converter ke nilai byte
 Dim objEncodingUTF8 As Object

 ' deklarasi object untuk crypto provider nya
 Dim cryptoProvider As Object

 ' create object dari class System.Text.UTF8Encoding
 Set objEncodingUTF8 = CreateObject("System.Text.UTF8Encoding")

 ' create object untuk provider cryptography nya
 Set cryptoProvider = CreateObject("System.Security.Cryptography.TripleDESCryptoServiceProvider")

 ' set key dan iv dalam bentuk byte array
 ' ini fungsi dari objEncodingUTF8.GetBytes_4 untuk merubah data string menjadi bentuk byte array
 cryptoProvider.Key = objEncodingUTF8.GetBytes_4(KEY_TRIPLEDES)
 cryptoProvider.iv = objEncodingUTF8.GetBytes_4(IV_TRIPLEDES)

 Dim resAsByteArray() As Byte
 ' proses encrypt
 ' yang dimasukan data clear nya, lalu index mulai dari array, dan panjang data
 ' perintahya -----------------------------------------(convert ke byte array ----(data clear), index awal, panjangnya data)
 ' cryptoProvider.CreateEncryptor().TransformFinalBlock(objEncodingUTF8.GetBytes_4(plain_text), 0, Len(plain_text))
 resAsByteArray = cryptoProvider.CreateEncryptor().TransformFinalBlock(objEncodingUTF8.GetBytes_4(plain_text), 0, Len(plain_text))

 ' reset variable
 Set cryptoProvider = Nothing
 Set objEncodingUTF8 = Nothing

 ' karena procedure ini berbentuk function jadi harus dikembalikan
 ' HexaToHexString digunakan untuk mengembalikan data dalam bentuk string
 ' dan merubah nilai byte kedalam bentuk hexadecimal
 ' ada juga yang dikembalikan kedalam XMLBase64
 EncryptData = HexaToHexString(resAsByteArray)
End Function

Private Function DecryptData(ByVal encrypt_text As String) As String
 ' sama seperti proses enkrip ya
 ' hanya beda diproces enkrip nya kali ini kita pakai dekrip untuk mengembalikan data
 Dim objEncodingUTF8 As Object
 Dim cryptoProvider As Object

 Set objEncodingUTF8 = CreateObject("System.Text.UTF8Encoding")
 Set cryptoProvider = CreateObject("System.Security.Cryptography.TripleDESCryptoServiceProvider")

 cryptoProvider.Key = objEncodingUTF8.GetBytes_4(KEY_TRIPLEDES)
 cryptoProvider.iv = objEncodingUTF8.GetBytes_4(IV_TRIPLEDES)


  
 Dim encryptedByteData() As Byte
 encryptedByteData = HexaFromHexString(encrypt_text)

 ' bedanya hanya disini
 ' disini proses nya pakai CreateDecryptor
 ' yang dimasukan data ecnkrip nya, lalu index mulai dari array, dan panjang array ditambah 1
 ' perintahya -----------------------------------------(data enkrip------, index awal, panjang array + 1)
 ' cryptoProvider.CreateDecryptor().TransformFinalBlock(encryptedByteData, 0, UBound(encryptedByteData) + 1)
 Dim resAsByteArray() As Byte
 resAsByteArray = cryptoProvider.CreateDecryptor().TransformFinalBlock(encryptedByteData, 0, UBound(encryptedByteData) + 1)

 Set cryptoProvider = Nothing

 ' jangan lupa untuk di kembalikan ke dalam string karena balikan dari provider crypto adalah byte array
 DecryptData = objEncodingUTF8.GetString(resAsByteArray)
 Set objEncodingUTF8 = Nothing
End Function

Private Function HexaFromHexString(ByVal hex_string As String) As Byte()
 Dim i As Long
 Dim iHexLen As Long

 iHexLen = CLng(Len(hex_string) / 2) - 1
 ReDim dummyArrayOut(0 To iHexLen) As Byte

 ' mengubah hexadecimal ke byte
 For i = 0 To iHexLen
  dummyArrayOut(i) = Val("&H" & Mid(hex_string, (i * 2) + 1, 2))
 Next i

 HexaFromHexString = dummyArrayOut
End Function

Private Function HexaToHexString(hex_bytearray() As Byte) As String
 Dim iVar As Variant
 Dim strH As String
 Dim strHexD As String

 ' mengubah byte ke hexadecimal
 For Each iVar In hex_bytearray
  strHexD = Hex(iVar)
  strH = strH & IIf(Len(strHexD) = 1, "0" & strHexD, strHexD)
 Next

 HexaToHexString = strH
End Function
       
 


  • sebagai contohnya:
    • Enkrip "saya orang indonesia" 


    • Setelah diklik tombol "Encrypt", kata "saya orang indonesia" menjadi "8293487F61C34CB8BAB4BCF39419534698D79E9B309304C0"


    • Untuk mengembalikan klik tombol "Decrypt"




bisa juga di download tools nya disini


Semoga bermanfaat, jangan lupa untuk dikembangkan
Terimakasih,
#HappyCoding #ExcelSakti



Comments