-->

Membuat Aplikasi Enkripsi dan Dekripsi di VB.Net


Membuat Aplikasi Enkripsi dan Dekripsi teks di VB.Net - selamat malam sahabat blogger semuanya, kembali lagi bersama saya guzko di blog yang sederhana ini. Semoga kunjungan para sahabat blogger semuanya disini, bisa memberikan sahabat inspirasi serta manfaat dari blog ini.

Seperti judul saya diatas yaitu tentang Membuat Aplikasi Enkripsi dan Dekripsi teks di VB.Net, kali ini saya akan membagikan tutorial kepada sahabat semua yaitu untuk melakukan enkripsi dan dekripsi teks sederhana. Sebelum kita melangkah ke pembuatan aplikasi, mungkin ada baiknya kita berkenalan dulu, apa sih itu enkripsi ? dan apa itu dekripsi ?

(Baca Juga : Tutorial Enkripsi dan Dekripsi File dengan Rijndael)

Apa itu Enkripsi ?

DÍ bidang kriptografi, enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus. Dikarenakan enkripsi telah digunakan untuk mengamankan komunikasi di berbagai negara, hanya organisasi-organisasi tertentu dan individu yang memiliki kepentingan yang sangat mendesak akan kerahasiaan yang menggunakan enkripsi. Di pertengahan tahun 1970-an, enkripsi kuat dimanfaatkan untuk pengamanan oleh sekretariat agen pemerintah Amerika Serikat pada domain publik, dan saat ini enkripsi telah digunakan pada sistem secara luas, seperti Internet e-commerce, jaringan Telepon bergerak dan ATM pada bank.

Enkripsi dapat digunakan untuk tujuan keamanan, tetapi teknik lain masih diperlukan untuk membuat komunikasi yang aman, terutama untuk memastikan integritas dan autentikasi dari sebuah pesan. Contohnya, Message Authentication Code (MAC) atau digital signature. Penggunaan yang lain yaitu untuk melindungi dari analisis jaringan komputer.
sumber: https://id.wikipedia.org/wiki/Enkripsi

Apa itu Dekripsi

Deskripsi adalah satu kaedah upaya pengolahan data menjadi sesuatu yang dapat diutarakan secara jelas dan tepat dengan tujuan agar dapat dimengerti oleh orang yang tidak langsung mengalaminya sendiri.

Dalam keilmuan, deskripsi diperlukan agar peneliti tidak melupakan pengalamannya dan agar pengalaman tersebut dapat dibandingkan dengan pengalaman peneliti lain, sehingga mudah untuk dilakukan pemeriksaan dan kontrol terhadap deskripsi tersebut. Pada umumnya deskripsi menegaskan sesuatu, seperti apa sesuatu itu kelihatannya, bagaimana bunyinya, bagaimana rasanya, dan sebagainya. Deskripsi yang detail diciptakan dan dipakai dalam disiplin ilmu sebagai istilah teknik.

Saat data yang dikumpulkan, deskripsi, analisis dan kesimpulannya lebih disajikan dalam angka-angka maka hal ini dinamakan penelitian kuantitatif. Sebaliknya, apabila data, deskripsi, dan analisis kesimpulannya disajikan dalam uraian kata-kata maka dinamakan penelitian kualitatif.

tulisan deskripsi adalah tulisan yang bertujuan untuk menjelaskan sebuag objek secara terperinci tanpa adanya pengaruh pendapat pendapat pengarang di dalam deskripsi tsb (andy the gunnerz)
sumber: https://id.wikipedia.org/wiki/Deskripsi

oke setelah sahabat blogger berkenalan dengan apa itu enkripsi dan dekripsi dalam dunia IT., sekarang waktunya kita coba untuk membuat aplikasinya. Aplikasi ini baru bersifat sederhan malah sangat sederhana sekali. Siapa tau nanti sahabat blogger dengan melihat aplikasi ini bisa mendapatkan inspirasi untuk membuat aplikasi yang lebih canggih lagi. Oke langsung saja langkah-langkahnya seperti dibawah ini :

1. Buka Visual Studio
buka visual studio sahabat blogger dan buat sebuah project baru, serta design project seperti gambar dibawah ini :


2. Buat Class
sekarang waktunya kita masuk kedalam tahap coding. Ini adalah inti dari aplikasi yang akan kita buat. Untuk membuat class baru di vb.net, lihat gambar dibawah ini :


disini kita akan membuat beberapa class untuk proses enkripsi dan dekripsinya. Kita buat satu class, satu proses seperti berikut :

class TripleDES
Imports System
Imports System.Text
Imports System.IO
Imports System.Security.Cryptography

Public Class TripleDES

    Private bPassword As Byte()
    Private sPassword As String

    Public Sub New(Optional ByVal Password As String = "password")
        ' On Class Begin
        Me.Password = Password
    End Sub

    Public ReadOnly Property PasswordHash As String
        Get
            Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
            Return UTF8.GetString(bPassword)
        End Get
    End Property

    Public Property Password() As String
        Get
            Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
            Return sPassword
        End Get
        Set(ByVal value As String)
            Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
            Dim HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            bPassword = HashProvider.ComputeHash(UTF8.GetBytes(value))
            sPassword = value
        End Set
    End Property

#Region "Encrypt"

    ' Encrypt using Password from Property Set (pre-hashed)
    Public Function Encrypt(ByVal Message As String) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = bPassword
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}
                Dim DataToEncrypt() As Byte = UTF8.GetBytes(Message)
                Try
                    Dim Encryptor As ICryptoTransform = TDESAlgorithm.CreateEncryptor
                    Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length)
                Finally
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using
        Return Convert.ToBase64String(Results)
    End Function

    ' Encrypt using Password as byte array
    Private Function Encrypt(ByVal Message As String, ByVal Password() As Byte) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = HashProvider.ComputeHash(UTF8.GetBytes(UTF8.GetString(Password)))
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}
                Dim DataToEncrypt() As Byte = UTF8.GetBytes(Message)
                Try
                    Dim Encryptor As ICryptoTransform = TDESAlgorithm.CreateEncryptor
                    Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length)
                Finally
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using
        Return Convert.ToBase64String(Results)
    End Function

    ' Encrypt using Password as string
    Public Function Encrypt(ByVal Message As String, ByVal Password As String) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
        ' Step 1. We hash the Passphrase using MD5
        ' We use the MD5 hash generator as the result is a 128 bit byte array
        ' which is a valid length for the TripleDES encoder we use below
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = HashProvider.ComputeHash(UTF8.GetBytes(Password))

            ' Step 2. Create a new TripleDESCryptoServiceProvider object

            ' Step 3. Setup the encoder
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}
                ' Step 4. Convert the input string to a byte[]

                Dim DataToEncrypt() As Byte = UTF8.GetBytes(Message)

                ' Step 5. Attempt to encrypt the string
                Try
                    Dim Encryptor As ICryptoTransform = TDESAlgorithm.CreateEncryptor
                    Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length)
                Finally
                    ' Clear the TripleDes and Hashprovider services of any sensitive information
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using

        ' Step 6. Return the encrypted string as a base64 encoded string
        Return Convert.ToBase64String(Results)
    End Function
#End Region

#Region "Decrypt"
    ' Decrypt using Password from Property (pre-hashed)
    Public Function Decrypt(ByVal Message As String) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = Me.bPassword
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}
                Dim DataToDecrypt() As Byte = Convert.FromBase64String(Message)
                Try
                    Dim Decryptor As ICryptoTransform = TDESAlgorithm.CreateDecryptor
                    Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length)
                Finally
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using
        Return UTF8.GetString(Results)
    End Function

    ' Decrypt using Password as Byte array
    Public Function Decrypt(ByVal Message As String, ByVal Password() As Byte) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = HashProvider.ComputeHash(UTF8.GetBytes(UTF8.GetString(Password)))
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}
                Dim DataToDecrypt() As Byte = Convert.FromBase64String(Message)
                Try
                    Dim Decryptor As ICryptoTransform = TDESAlgorithm.CreateDecryptor
                    Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length)
                Finally
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using
        Return UTF8.GetString(Results)
    End Function


    ' Decrypt using Password as string
    Public Function Decrypt(ByVal Message As String, ByVal Password As String) As String
        Dim Results() As Byte
        Dim UTF8 As System.Text.UTF8Encoding = New System.Text.UTF8Encoding

        ' Step 1. We hash the Pass phrase using MD5
        ' We use the MD5 hash generator as the result is a 128 bit byte array
        ' which is a valid length for the TripleDES encoder we use below
        Using HashProvider As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
            Dim TDESKey() As Byte = HashProvider.ComputeHash(UTF8.GetBytes(Password))

            ' Step 2. Create a new TripleDESCryptoServiceProvider object
            ' Step 3. Setup the decoder
            Using TDESAlgorithm As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider() With {.Key = TDESKey, .Mode = CipherMode.ECB, .Padding = PaddingMode.PKCS7}

                ' Step 4. Convert the input string to a byte[]
                Dim DataToDecrypt() As Byte = Convert.FromBase64String(Message)
                ' Step 5. Attempt to decrypt the string
                Try
                    Dim Decryptor As ICryptoTransform = TDESAlgorithm.CreateDecryptor
                    Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length)
                Finally

                    ' Clear the TripleDes and Hash provider services of any sensitive information
                    TDESAlgorithm.Clear()
                    HashProvider.Clear()
                End Try
            End Using
        End Using

        ' Step 6. Return the decrypted string in UTF8 format
        Return UTF8.GetString(Results)
    End Function

#End Region

End Class

class md5
Imports System.Security.Cryptography
Imports System.Text
Namespace DataHash

    Public Class md5ku
        Private EncStringBytes() As Byte
        Private Encoder As New UTF8Encoding
        Private MD5Hasher As New MD5CryptoServiceProvider

        Public Function Encrypt(ByVal EncString As String) As String
            'Variable Declarations
            Dim RanGen As New Random
            Dim RanString As String = ""
            Dim MD5String As String
            Dim RanSaltLoc As String

            'Generates a Random number of under 4 digits
            While RanString.Length <= 3
                RanString = RanString & RanGen.Next(0, 9)
            End While

            'Converts the String to bytes
            EncStringBytes = Encoder.GetBytes(EncString & RanString)

            'Generates the MD5 Byte Array
            EncStringBytes = MD5Hasher.ComputeHash(EncStringBytes)

            'Affixing Salt information into the MD5 hash
            MD5String = BitConverter.ToString(EncStringBytes)
            MD5String = MD5String.Replace("-", Nothing)

            'Finds a random location in the string to sit the salt
            RanSaltLoc = RanGen.Next(4, MD5String.Length)

            'Shoves the salt in the location
            MD5String = MD5String.Insert(RanSaltLoc, RanString)

            'Adds 0 for values under 10 so we always occupy 2 charater spaces
            If RanSaltLoc < 10 Then
                RanSaltLoc = "0" & RanSaltLoc
            End If

            'Shoves the salt location in the string at position 3
            MD5String = MD5String.Insert(3, RanSaltLoc)

            'Returns the MD5 encrypted string to the calling object
            Return MD5String
        End Function

        Public Function Verify(ByVal S As String, ByVal Hash As String) As Boolean
            'Variable Declarations
            Dim SaltAddress As Double
            Dim SaltID As String
            Dim NewHash As String

            'Finds the Salt Address and Removes the Salt Address from the string
            SaltAddress = Hash.Substring(3, 2)
            Hash = Hash.Remove(3, 2)

            'Finds the SaltID and removes it from the string
            SaltID = Hash.Substring(SaltAddress, 4)
            Hash = Hash.Remove(SaltAddress, 4)

            'Converts the string passed to us to Bytes
            EncStringBytes = Encoder.GetBytes(S & SaltID)

            'Encryptes the string passed to us with the salt
            EncStringBytes = MD5Hasher.ComputeHash(EncStringBytes)

            'Converts the Hash to a string
            NewHash = BitConverter.ToString(EncStringBytes)
            NewHash = NewHash.Replace("-", Nothing)

            'Tests the new has against the one passed to us
            If NewHash = Hash Then
                Return True
            ElseIf NewHash <> Hash Then
                Return False
            End If
        End Function

    End Class
End Namespace


class AES
Module AES
    Public Function AESEncryption(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim encrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
            Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
            encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return encrypted
        Catch ex As Exception
        End Try
    End Function

    Public Function AESDecryption(ByVal input As String, ByVal pass As String) As String
        Dim AES As New System.Security.Cryptography.RijndaelManaged
        Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
        Dim decrypted As String = ""
        Try
            Dim hash(31) As Byte
            Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
            Array.Copy(temp, 0, hash, 0, 16)
            Array.Copy(temp, 0, hash, 15, 16)
            AES.Key = hash
            AES.Mode = Security.Cryptography.CipherMode.ECB
            Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
            Dim Buffer As Byte() = Convert.FromBase64String(input)
            decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
            Return decrypted
        Catch ex As Exception
        End Try
    End Function
End Module


setelah selesai membuat coding classnya, sekarang kita pindah ke form. Klik 2x pada button dan inputkan kode dibawah ini :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Then
            MsgBox("isi dulu text inputnya", vbCritical, "Guzko Tutorial")
            TextBox1.Focus()
            Exit Sub
        Else
            If RadioButton1.Checked = True Then
                Try
                    Dim Endes As New TripleDES
                    TextBox2.Text = Endes.Decrypt(TextBox1.Text)
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton2.Checked = True Then
                Try
                    Dim Endes As New TripleDES
                    TextBox2.Text = Endes.Encrypt(TextBox1.Text)
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton3.Checked = True Then
                Dim md5 As New md5ku
                Try
                    TextBox2.Text = md5.Encrypt(TextBox1.Text)
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton5.Checked = True Then

                Try
                    TextBox2.Text = AESEncryption(TextBox1.Text, "")
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton6.Checked = True Then
                Try
                    TextBox2.Text = AESDecryption(TextBox1.Text, "")
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton7.Checked = True Then
                Try
                    Dim byt As Byte() = System.Text.Encoding.UTF8.GetBytes(TextBox1.Text)
                    TextBox2.Text = Convert.ToBase64String(byt)
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            ElseIf RadioButton8.Checked = True Then
                Try
                    Dim byt As Byte() = Convert.FromBase64String(TextBox1.Text)
                    TextBox2.Text = System.Text.Encoding.UTF8.GetString(byt)
                Catch ex As Exception
                    MsgBox("Unknow Error : " & ex.Message, vbCritical, "Guzko Tutorial")
                End Try
            End If
        End If
    End Sub

selesai, sekarang coba sahabat jalankan aplikasi tersebut dan lihat hasilnya. Pada contoh ini saya hanya mengisi dengan beberapa jenis metode enkripsi saja. Nanti akan saya lanjutkan dengan tutorial bagiamana caranya membuat enkripsi sebuah file, sehingga file tersebut tidak bisa dibaca sembarangan oleh orang yang tidak berwenang.

sekian dulu tutorial dari saya tentang Membuat Aplikasi Enkripsi dan Dekripsi teks di VB.Net, semoga bermanfaat. Dan jika sahabat blogger ingin download projectnya, sudah saya sediakan link dibawah ini. seee...uuuu



3 komentar

avatar

link error -_-
upload di yg lain dong gan, di 4shared susah

avatar

Hay,,, aku buatin SDK enkripsi dngn Crypto dan ditambah juga Enkripsi terproteksi paswd, beda Enkripsi beda juga Dekripsi, hehehe, aku juga masih belajar ,oh ya ini modifikasi dariku sindiri lho :D , Nih video Tutorialnya dan File downloadnya ada di keterangan : https://www.youtube.com/watch?v=uXv33e0Nod4

avatar

Kalau pakai Visual Studio bisa juga ya ?

Click to comment