Tuesday, May 29, 2012

Ekripsi data 2 arah pada VB.net 2008

Terkadang muncul beberapa ide baru yang terpikirkan ketika menrancang sebuah software baru. Salah satu ide yang terlintas adalah melakukan enkripsi 2 arah pada file konfigurasi. Ide ini muncul ketika ingin melakukan penyimpanan data konfigurasi (file .ini). Karena data yang disimpan adalah data akun dan password dari database, oleh karena itu diperlukan adanya enkripsi 2 arah yang paling tidak dapat membantu dalam menyelesaiakan permasalahan ini. Memang source code ini bukan aku yang membuat, tetapi mengambil dari beberapa forum dan blog pribadi orang lain.

sumber source code :
http://social.msdn.microsoft.com/Forums/da-DK/vblanguage/thread/401012c7-91e3-4eee-9e42-e5936a1afe61
http://www.dotnetspider.com/resources/24439-Encryption-Decryption-VB-Net.aspx
http://www.vbforums.com/showthread.php?t=559853

Berikut ini contoh program enkripsi 2 arah.
    Private Shared Function Encrypt(ByVal strText As String, ByVal strEncrKey As String) As String
        Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
        Try
            Dim bykey() As Byte = System.Text.Encoding.UTF8.GetBytes(Microsoft.VisualBasic.Left(strEncrKey, 8))
            Dim InputByteArray() As Byte = System.Text.Encoding.UTF8.GetBytes(strText)
            Dim des As New DESCryptoServiceProvider
            Dim ms As New MemoryStream
            Dim cs As New CryptoStream(ms, des.CreateEncryptor(bykey, IV), CryptoStreamMode.Write)
            cs.Write(InputByteArray, 0, InputByteArray.Length)
            cs.FlushFinalBlock()
            Return Convert.ToBase64String(ms.ToArray())
        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

    Private Shared Function Decrypt(ByVal strText As String, ByVal sDecrKey As String) As String
        Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
        Dim inputByteArray(strText.Length) As Byte
        Try
            Dim byKey() As Byte = System.Text.Encoding.UTF8.GetBytes(Microsoft.VisualBasic.Left(sDecrKey, 8))
            Dim des As New DESCryptoServiceProvider
            inputByteArray = Convert.FromBase64String(strText)
            Dim ms As New MemoryStream
            Dim cs As New CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write)
            cs.Write(inputByteArray, 0, inputByteArray.Length)
            cs.FlushFinalBlock()
            Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
            Return encoding.GetString(ms.ToArray())
        Catch ex As Exception
            Return ex.Message
        End Try
    End Function

Sedangkan untuk penggunaannya, dapat gunakan cara berikut ini :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox2.Text = Encrypt(TextBox1.Text, "12345678")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox4.Text = Decrypt(TextBox3.Text, "12345678")
    End Sub

Selain itu, jangan lupa untuk memasukan file include / imports

Imports System.Security.Cryptography
Imports System.IO


Pada perintah ini memang diharuskan mengisikan kata kunci yang akan membantu dalam proses enkripsi data agar tidak dengan mudah diketehui orang lain. Pengisikan kata kunci ini minimal adalah 8 karakter. Karakter yang digunakan dalam proses encrypt dan decrypt harus sama.
Berikut ini contoh program enkripsi 2 arah yang dibuat dengan menggunakan VB.net 2008

6 comments:

  1. Isi kata kunci yg minimal 8 karakter itu, di bagian mananya sy hrs isi/ganti gan?

    ReplyDelete
  2. Isi kata kunci yg minimal 8 karakter itu, di bagian mananya sy hrs isi/ganti gan?

    ReplyDelete
    Replies
    1. Pada perintah
      TextBox2.Text = Encrypt(TextBox1.Text, "12345678")
      karakter "12345678" dapat diganti dengan karakter lain.
      Hal ini juga berlaku pada proses Decrypt.
      Contoh :
      TextBox2.Text = Encrypt(TextBox1.Text, "8karakter")
      TextBox4.Text = Decrypt(TextBox3.Text, "8karakter").

      Thanks.

      Delete
    2. Wah, mantab! Work gan.. thx bgt gan,
      Sy dah coba pake VS-2012 trnyata bs d implementasikan, hanyasaja ada bbrp class system yg hrs diubah.
      Sy jg pake katakuncinya lbh dari 8 karakter (biar lbh aman ^_^)


      sukses bwt blog na gan

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Wah, mantab! Work gan.. thx bgt gan,
    Sy dah coba pake VS-2012 trnyata bs d implementaaikan, hanyasaja ada bbrp class system yg hrs diubah.
    Sy jg pake katakuncinya lbh dari 8 karakter (biar lbh aman ^_^)


    sukses bwt blog na gan

    ReplyDelete