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.sumber: https://id.wikipedia.org/wiki/Enkripsi
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.
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.sumber: https://id.wikipedia.org/wiki/Deskripsi
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)
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
link error -_-
upload di yg lain dong gan, di 4shared susah
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
Kalau pakai Visual Studio bisa juga ya ?