1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Module CryptoAES
Public Class Crypto
Private _key As String
Public Property key() As String
Get
Return _key
End Get
Set(ByVal value As String)
_key = value
End Set
End Property
Public Sub EncryptFile(ByVal sInputFilename As String, _
ByVal sOutputFilename As String, _
ByVal sKey As String)
Dim fsInput As New FileStream(sInputFilename, _
FileMode.Open, FileAccess.Read)
Dim fsEncrypted As New FileStream(sOutputFilename, _
FileMode.Create, FileAccess.Write)
Dim AES As New AesCryptoServiceProvider()
'Set secret key for AES algorithm.
'A 256-bit key and an IV are required for this provider.
AES.KeySize = 256
AES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
'Set the initialization vector.
AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(sKey, 16))
'Create the AES encryptor from this instance.
Dim aesencrypt As ICryptoTransform = AES.CreateEncryptor()
'Create the crypto stream that transforms the file stream by using AES encryption.
Dim cryptostream As New CryptoStream(fsEncrypted, _
aesencrypt, _
CryptoStreamMode.Write)
'Read the file text to the byte array.
Dim bytearrayinput(CInt(fsInput.Length - 1)) As Byte
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
'Write out the AES encrypted file.
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
cryptostream.Close()
fsInput.Close()
End Sub
Public Sub DecryptFile(ByVal sInputFilename As String, _
ByVal sOutputFilename As String, _
ByVal sKey As String)
Dim AES As New AesCryptoServiceProvider()
'A 64-bit key and an IV are required for this provider.
'Set the secret key for the AES algorithm.
AES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
'Set the initialization vector.
AES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
'Create the file stream to read the encrypted file back.
Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
'Create the AES decryptor from the AES instance.
Dim aesdecrypt As ICryptoTransform = AES.CreateDecryptor()
'Create the crypto stream set to read and to do a AES decryption transform on incoming bytes.
Dim cryptostreamDecr As New CryptoStream(fsread, aesdecrypt, CryptoStreamMode.Read)
'Print out the contents of the decrypted file.
Dim fsDecrypted As New StreamWriter(sOutputFilename)
fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)
fsDecrypted.Flush()
fsDecrypted.Close()
fsread.Close()
End Sub
Public Function EncryptString(ByVal sString As String) As String
'Initialize AES Crypto Provider
Dim AES As New AesCryptoServiceProvider()
'Set KeySize to 256 Bit
AES.KeySize = 256
'Set the initialization vector and the encryption key
AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(_key, 16))
AES.Key = ASCIIEncoding.ASCII.GetBytes(_key)
'Create the AES Encryptor
Dim aesencrypt As ICryptoTransform = AES.CreateEncryptor
'Convert plain text to bytes
Dim plaintext() As Byte = System.Text.Encoding.Unicode.GetBytes(sString)
'Create the Stream
Dim ms As New System.IO.MemoryStream
'Create the encoder
Dim encStream As New CryptoStream(ms, aesencrypt, CryptoStreamMode.Write)
encStream.Write(plaintext, 0, plaintext.Length)
encStream.FlushFinalBlock()
Return Convert.ToBase64String(ms.ToArray)
End Function
Public Function DecryptString(ByVal sString As String) As String
'Initialize AES Crypto Provider
Dim AES As New AesCryptoServiceProvider()
'Set KeySize to 256 Bit
AES.KeySize = 256
'Set the initialization vector and the encryption key
AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(_key, 16))
AES.Key = ASCIIEncoding.ASCII.GetBytes(_key)
'Create the AES Decryptor
Dim aesdecrypt As ICryptoTransform = AES.CreateDecryptor
'Convert plain text to bytes
Dim encryptedstring() As Byte = Convert.FromBase64String(sString)
'Create the Stream
Dim ms As New System.IO.MemoryStream
'Create the decoder
Dim decStream As New CryptoStream(ms, aesdecrypt, CryptoStreamMode.Write)
decStream.Write(encryptedstring, 0, encryptedstring.Length)
decStream.FlushFinalBlock()
Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
End Function
End Class
End Module
|