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 ?