Below are two examples for AES and 3DES encryption. These use byte arrays as the input and output but you can easily modify to handle strings. As a good practice you should always generate the initialization vector (IV) and prepend it to the output file for decrypting. This helps protect your KEY from brute force attacks. It's also better to use CBC rather than EBC for the cipher mode.
Imports System.Security.Cryptography
Imports System.Text
Public Class CAes
'************************************************************************************************
'Functions for AES Encryption
'************************************************************************************************
Public Function AES_Encrypt(ByVal value As Byte(), ByVal key As String) As Byte()
Dim AES As New RijndaelManaged
Dim SHA256 As New SHA256Cng
Dim output() As Byte
AES.GenerateIV()
Dim iv() As Byte = AES.IV
AES.Key = SHA256.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key))
AES.Mode = CipherMode.CBC
Dim AESEncrypter As ICryptoTransform = AES.CreateEncryptor
Dim Buffer As Byte() = value
output = AESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)
'Copy the IV as the first 16 bytes of the output then copy encrypted bytes
Dim ivAndOutput(output.Length - 1 + 16) As Byte
Array.Copy(iv, ivAndOutput, 16)
Array.Copy(output, 0, ivAndOutput, 16, output.Length)
Return ivAndOutput
End Function
Public Function AES_Decrypt(ByVal value As Byte(), ByVal key As String) As Byte()
Dim AES As New RijndaelManaged
Dim SHA256 As New SHA256Cng
Dim output() As Byte
Dim iv(15) As Byte
Dim Buffer(value.Length - 1 - 16) As Byte
'Extract first 16 bytes of input stream as IV. Copy remaining bytes into encrypted buffer
Array.Copy(value, iv, 16)
Array.Copy(value, 16, Buffer, 0, value.Length - 16)
AES.Key = SHA256.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key))
AES.IV = iv
AES.Mode = CipherMode.CBC
Dim AESDecrypter As ICryptoTransform = AES.CreateDecryptor
output = AESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)
Return output
End Function
End Class
Public Class C3Des
'************************************************************************************************
'Functions for 3DES Encryption
'************************************************************************************************
Public Function DES_Encrypt(ByVal value As Byte(), ByVal key As String) As Byte()
Dim m As MD5 = New MD5CryptoServiceProvider
Dim d As TripleDES = New TripleDESCryptoServiceProvider
Dim encryptBytes() As Byte
d.Key = m.ComputeHash(Encoding.Unicode.GetBytes(key))
d.GenerateIV()
Dim c As ICryptoTransform = d.CreateEncryptor
Dim input() As Byte = value
encryptBytes = c.TransformFinalBlock(input, 0, input.Length)
Dim outBytes(encryptBytes.Length + d.IV.Length - 1) As Byte
Array.Copy(d.IV, outBytes, d.IV.Length)
Array.Copy(encryptBytes, 0, outBytes, 8, encryptBytes.Length)
Return outBytes
End Function
Public Function DES_Decrypt(ByVal value As Byte(), ByVal key As String) As Byte()
Dim m As MD5 = New MD5CryptoServiceProvider
Dim d As TripleDES = New TripleDESCryptoServiceProvider
Dim encryptBytes(value.Length - 9), iv(7) As Byte
Array.Copy(value, 0, iv, 0, 8)
Array.Copy(value, 8, encryptBytes, 0, value.Length - 8)
d.Key = m.ComputeHash(Encoding.Unicode.GetBytes(key))
d.IV = iv
Dim b As Byte() = encryptBytes
Dim c As ICryptoTransform = d.CreateDecryptor
Dim output() As Byte = c.TransformFinalBlock(b, 0, b.Length)
Return output
End Function
End Class