· 7 years ago · Apr 19, 2018, 09:52 PM
1Public Class Aes256Encrypter
2 Public Function Encrypt(ByVal plainText As String, ByVal secretKey As String) As Byte()
3 Dim encryptedPassword As Byte()
4 Using outputStream As MemoryStream = New MemoryStream()
5 Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
6 Using cryptoStream As CryptoStream = New CryptoStream(outputStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write)
7 Dim inputBuffer() As Byte = Encoding.Unicode.GetBytes(plainText)
8 cryptoStream.Write(inputBuffer, 0, inputBuffer.Length)
9 cryptoStream.FlushFinalBlock()
10 encryptedPassword = outputStream.ToArray()
11 End Using
12 End Using
13 Return encryptedPassword
14 End Function
15
16 Public Function Decrypt(ByVal encryptedBytes As Byte(), ByVal secretKey As String) As String
17 Dim plainText As String = Nothing
18 Using inputStream As MemoryStream = New MemoryStream(encryptedBytes)
19 Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
20 Using cryptoStream As CryptoStream = New CryptoStream(inputStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)
21 Dim outputBuffer(0 To CType(inputStream.Length - 1, Integer)) As Byte
22 Dim readBytes As Integer = cryptoStream.Read(outputBuffer, 0, CType(inputStream.Length, Integer))
23 plainText = Encoding.Unicode.GetString(outputBuffer, 0, readBytes)
24 End Using
25 End Using
26 Return plainText
27 End Function
28
29 Private Function getAlgorithm(ByVal secretKey As String) As RijndaelManaged
30 Const salt As String = "put your salt here"
31 Const keySize As Integer = 256
32
33 Dim keyBuilder As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(secretKey, Encoding.Unicode.GetBytes(salt))
34 Dim algorithm As RijndaelManaged = New RijndaelManaged()
35 algorithm.KeySize = keySize
36 algorithm.IV = keyBuilder.GetBytes(CType(algorithm.BlockSize / 8, Integer))
37 algorithm.Key = keyBuilder.GetBytes(CType(algorithm.KeySize / 8, Integer))
38 algorithm.Padding = PaddingMode.PKCS7
39 Return algorithm
40 End Function
41End Class
42
43Public Class Aes256Base64Encrypter
44 Public Function Encrypt(ByVal plainText As String, ByVal secretKey As String) As String
45 Dim encryptedPassword As String = Nothing
46 Using outputStream As MemoryStream = New MemoryStream()
47 Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
48 Using cryptoStream As CryptoStream = New CryptoStream(outputStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write)
49 Dim inputBuffer() As Byte = Encoding.Unicode.GetBytes(plainText)
50 cryptoStream.Write(inputBuffer, 0, inputBuffer.Length)
51 cryptoStream.FlushFinalBlock()
52 encryptedPassword = Convert.ToBase64String(outputStream.ToArray())
53 End Using
54 End Using
55 Return encryptedPassword
56 End Function
57
58 Public Function Decrypt(ByVal encryptedBytes As String, ByVal secretKey As String) As String
59 Dim plainText As String = Nothing
60 Using inputStream As MemoryStream = New MemoryStream(Convert.FromBase64String(encryptedBytes))
61 Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
62 Using cryptoStream As CryptoStream = New CryptoStream(inputStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)
63 Dim outputBuffer(0 To CType(inputStream.Length - 1, Integer)) As Byte
64 Dim readBytes As Integer = cryptoStream.Read(outputBuffer, 0, CType(inputStream.Length, Integer))
65 plainText = Encoding.Unicode.GetString(outputBuffer, 0, readBytes)
66 End Using
67 End Using
68 Return plainText
69 End Function
70
71 Private Function getAlgorithm(ByVal secretKey As String) As RijndaelManaged
72 Const salt As String = "put your salt here"
73 Const keySize As Integer = 256
74
75 Dim keyBuilder As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(secretKey, Encoding.Unicode.GetBytes(salt))
76 Dim algorithm As RijndaelManaged = New RijndaelManaged()
77 algorithm.KeySize = keySize
78 algorithm.IV = keyBuilder.GetBytes(CType(algorithm.BlockSize / 8, Integer))
79 algorithm.Key = keyBuilder.GetBytes(CType(algorithm.KeySize / 8, Integer))
80 algorithm.Padding = PaddingMode.PKCS7
81 Return algorithm
82 End Function
83End Class