Sebagai sarana untuk menyimpan data, aplikasi database semacam Access tentu harus bisa melindungi pengguna dari penyalahgunaan data. Salah satu cara yang digunakan untuk melindungi data adalah dengan melakukan enkripsi.
Enkripsi adalah proses penyamaran data supaya orang lain tidak bisa membaca atau memahami data yang dimaksud, dan hanya orang-orang tertentu saja yang bisa membaca atau memahami data itu. Salah satu contoh adalah penyimpanan data password atau kata sandi. Semua pengguna yang melek teknologi pasti paham apa itu password. Password biasa digunakan untuk melakukan otorisasi masuk ke dalam suatu lingkungan/sistem. Nah, siapa yang melakukan otorisasi? Tentu saja pengguna yang telah terdaftar di lingkungan atau sistem itu. Pengguna yang terdaftar di dalam lingkungan atau sistem mempunyai semacam identitas yang unik, misalnya nama login, alamat email, nomor urut, nomor induk pegawai, nomor seluler, dan sebagainya.Setelah memasukkan identitas, supaya bisa masuk ke dalam lingkungan atau sistem, pengguna harus memasukkan password. Bila password terverifikasi, maka pengguna bisa masuk. Bila tidak, maka pengguna akan ditolak. Demikian logikanya.
Agar password terlindungi dan aman dari pihak yang tidak berkepentingan, kita bisa melakukan enkripsi pada password ini. Caranya, dengan menyamarkan password dengan kode yang tidak mudah dipahami. Selain password, data lain yang mungkin dipandang penting dan rahasia dapat juga dienkripsi. Artinya, bila suatu tabel berisi data sensitif dan rahasia, misalnya NPWP, NIK KTP, gaji, dan sebagainya, kita bisa saja melakukan enkripsi atas data ini. Dengan demikian, data dalam tabel menjadi aman.
Ada banyak sekali cara melakukan enkripsi data, seperti menggunakan MD5, SH1. SH256, dan membuat enkripsi sendiri. Salah satu cara untuk melakukan enkripsi adalah dengan menggunakan Data Encryption Standard (DES). DES banyak digunakan oleh praktisi programmer, karena sifatnya yang mudah dibuat dan bisa diatur sesuai dengan keinginan kita.
Berikut ini adalah kode VBA dari DES yang diperoleh dari https://gist.github.com/motoraku/97ad730891e59159d86c:
Satu keunggulan kode enkripsi DES di atas, dibandingkan dengan cara seperti MD5, SH1, dll, adalah adanya konstanta INITIALIZATION_VECTOR dan TRIPLE_DES_KEY. Dua konstanta ini memungkinkan kita untuk mengatur sendiri nilai yang ingin disamarkan. Selain itu ada pengaturan lain yang bisa disesuaikan, tinggal kita atur saja mana yang paling pas.
Berikut ini adalah contoh aplikasi di Immediate Window.
Nah, dengan menggunakan fungsi EncryptStringTripleDES, kita bisa menyimpan data di tabel dalam bentuk enkripsi data, sehingga datanya aman dari gangguan pihak-pihak yang tidak berkepentingan. Untuk membaca kode enkripsi itu, kita harus menggunakan fungsi DecryptStringTripleDES pada nilai data yang diingkan, yaitu saat data ingin ditampilkan di form atau report di Access.
Enkripsi adalah proses penyamaran data supaya orang lain tidak bisa membaca atau memahami data yang dimaksud, dan hanya orang-orang tertentu saja yang bisa membaca atau memahami data itu. Salah satu contoh adalah penyimpanan data password atau kata sandi. Semua pengguna yang melek teknologi pasti paham apa itu password. Password biasa digunakan untuk melakukan otorisasi masuk ke dalam suatu lingkungan/sistem. Nah, siapa yang melakukan otorisasi? Tentu saja pengguna yang telah terdaftar di lingkungan atau sistem itu. Pengguna yang terdaftar di dalam lingkungan atau sistem mempunyai semacam identitas yang unik, misalnya nama login, alamat email, nomor urut, nomor induk pegawai, nomor seluler, dan sebagainya.Setelah memasukkan identitas, supaya bisa masuk ke dalam lingkungan atau sistem, pengguna harus memasukkan password. Bila password terverifikasi, maka pengguna bisa masuk. Bila tidak, maka pengguna akan ditolak. Demikian logikanya.
Agar password terlindungi dan aman dari pihak yang tidak berkepentingan, kita bisa melakukan enkripsi pada password ini. Caranya, dengan menyamarkan password dengan kode yang tidak mudah dipahami. Selain password, data lain yang mungkin dipandang penting dan rahasia dapat juga dienkripsi. Artinya, bila suatu tabel berisi data sensitif dan rahasia, misalnya NPWP, NIK KTP, gaji, dan sebagainya, kita bisa saja melakukan enkripsi atas data ini. Dengan demikian, data dalam tabel menjadi aman.
Ada banyak sekali cara melakukan enkripsi data, seperti menggunakan MD5, SH1. SH256, dan membuat enkripsi sendiri. Salah satu cara untuk melakukan enkripsi adalah dengan menggunakan Data Encryption Standard (DES). DES banyak digunakan oleh praktisi programmer, karena sifatnya yang mudah dibuat dan bisa diatur sesuai dengan keinginan kita.
Berikut ini adalah kode VBA dari DES yang diperoleh dari https://gist.github.com/motoraku/97ad730891e59159d86c:
Option Explicit Public Const INITIALIZATION_VECTOR = "12345678" 'Always 8 characters Public Const TRIPLE_DES_KEY = "abcdefghijklmnop" 'Always 16 characters '************************************************************************** '************************************************************************** 'https://gist.github.com/motoraku/97ad730891e59159d86c '************************************************************************** '************************************************************************** Sub TestEncrypt() MsgBox "This is an encrypted string: -> " & EncryptStringTripleDES("This is an encrypted string:") Debug.Print EncryptStringTripleDES("This is an encrypted string:") End Sub Sub TestDecrypt() MsgBox "u99CVItCGiMQEVYHf8+S22QbJ5CPQGDXuS5n1jvEIgU= -> " & DecryptStringTripleDES("u99CVItCGiMQEVYHf8+S22QbJ5CPQGDXuS5n1jvEIgU=") End Sub Function EncryptStringTripleDES(plain_string As String) As Variant Dim encryption_object As Object Dim plain_byte_data() As Byte Dim encrypted_byte_data() As Byte Dim encrypted_base64_string As String EncryptStringTripleDES = Null On Error GoTo FunctionError plain_byte_data = CreateObject("System.Text.UTF8Encoding").GetBytes_4(plain_string) Set encryption_object = CreateObject("System.Security.Cryptography.TripleDESCryptoServiceProvider") encryption_object.Padding = 3 encryption_object.Key = CreateObject("System.Text.UTF8Encoding").GetBytes_4(TRIPLE_DES_KEY) encryption_object.IV = CreateObject("System.Text.UTF8Encoding").GetBytes_4(INITIALIZATION_VECTOR) encrypted_byte_data = _ encryption_object.CreateEncryptor().TransformFinalBlock(plain_byte_data, 0, UBound(plain_byte_data) + 1) encrypted_base64_string = BytesToBase64(encrypted_byte_data) EncryptStringTripleDES = encrypted_base64_string Exit Function FunctionError: MsgBox "TripleDES encryption failed" End Function Function DecryptStringTripleDES(encrypted_string As String) As Variant Dim encryption_object As Object Dim encrypted_byte_data() As Byte Dim plain_byte_data() As Byte Dim plain_string As String DecryptStringTripleDES = Null On Error GoTo FunctionError encrypted_byte_data = Base64toBytes(encrypted_string) Set encryption_object = CreateObject("System.Security.Cryptography.TripleDESCryptoServiceProvider") encryption_object.Padding = 3 encryption_object.Key = CreateObject("System.Text.UTF8Encoding").GetBytes_4(TRIPLE_DES_KEY) encryption_object.IV = CreateObject("System.Text.UTF8Encoding").GetBytes_4(INITIALIZATION_VECTOR) plain_byte_data = encryption_object.CreateDecryptor().TransformFinalBlock(encrypted_byte_data, 0, UBound(encrypted_byte_data) + 1) plain_string = CreateObject("System.Text.UTF8Encoding").GetString(plain_byte_data) DecryptStringTripleDES = plain_string Exit Function FunctionError: MsgBox "TripleDES decryption failed" End Function Function BytesToBase64(varBytes() As Byte) As String With CreateObject("MSXML2.DomDocument").createElement("b64") .DataType = "bin.base64" .nodeTypedValue = varBytes BytesToBase64 = Replace(.Text, vbLf, "") End With End Function Function Base64toBytes(varStr As String) As Byte() With CreateObject("MSXML2.DOMDocument").createElement("b64") .DataType = "bin.base64" .Text = varStr Base64toBytes = .nodeTypedValue End With End Function '************************************************************************** '************************************************************************** '**************************************************************************
Satu keunggulan kode enkripsi DES di atas, dibandingkan dengan cara seperti MD5, SH1, dll, adalah adanya konstanta INITIALIZATION_VECTOR dan TRIPLE_DES_KEY. Dua konstanta ini memungkinkan kita untuk mengatur sendiri nilai yang ingin disamarkan. Selain itu ada pengaturan lain yang bisa disesuaikan, tinggal kita atur saja mana yang paling pas.
Berikut ini adalah contoh aplikasi di Immediate Window.
?EncryptStringTripleDES("tes") zK4kzizd9qA=Bila kode ekripsi di atas didekripsikan, hasilnya akan kembali seperti semula.
?DecryptStringTripleDES("zK4kzizd9qA=") tes
Nah, dengan menggunakan fungsi EncryptStringTripleDES, kita bisa menyimpan data di tabel dalam bentuk enkripsi data, sehingga datanya aman dari gangguan pihak-pihak yang tidak berkepentingan. Untuk membaca kode enkripsi itu, kita harus menggunakan fungsi DecryptStringTripleDES pada nilai data yang diingkan, yaitu saat data ingin ditampilkan di form atau report di Access.
Comments
Post a Comment