'Requires Encryptation and StringUtils libraries
'These subs where compiles from code found on the forums
'Credit to the authors
Sub test
Dim public_key As String = Generate_Token
Dim msg As String = "I am a message"
Dim private_key As String = Generate_Token
Dim enc As String = AES_Encrypt(msg, public_key, private_key)
Log(enc)
Log(AES_Decrypt(enc, public_key, private_key))
End Sub
Public Sub Generate_Token() As String
Dim stp As String = "0000000000000000" '16 CHARS / change here according to needs
Dim sb As String = ""
For Index = 0 To stp.Length-1
If stp.CharAt(Index)="0" Then
sb=sb & "0123456789abcdefghizklmnopqrstuvwzABCDEFGHIJKLMNOPQRSTUVWZ".CharAt(Rnd(0, 57))
Else
sb=sb & stp.CharAt(Index)
End If
Next
Return sb
End Sub
private Sub AES_Encrypt(input As String, token As String, pass As String) As String
If token.Length <> 16 Or pass.Length <> 16 Then
Log($"AES ERROR: ${input}/${token}"$)
Return ""
End If
Dim su As StringUtils
Dim inputB() As Byte = input.GetBytes("UTF8")
Dim passB() As Byte = pass.GetBytes("UTF8")
Dim IVb() As Byte = token.GetBytes("UTF8")
Dim kg As KeyGenerator
Dim C As Cipher
kg.Initialize("AES")
kg.KeyFromBytes(passB)
C.Initialize("AES/CBC/PKCS5Padding")
C.InitialisationVector = IVb
Dim datas() As Byte = C.Encrypt(inputB, kg.Key, True)
Return su.EncodeBase64(datas) 'Return Base64 Encoded string
End Sub
private Sub AES_Decrypt(input As String, token As String, pass As String) As String
Dim su As StringUtils
Dim inputB() As Byte = su.DecodeBase64(input) ' from String utilities
Dim passB() As Byte = pass.GetBytes("UTF8")
Dim IVb() As Byte = token.GetBytes("UTF8")
Dim kg As KeyGenerator
Dim C As Cipher
kg.Initialize("AES")
kg.KeyFromBytes(passB)
C.Initialize("AES/CBC/PKCS5Padding")
C.InitialisationVector = IVb
Try
Dim datas() As Byte = C.Decrypt(inputB, kg.Key, True)
Return BytesToString(datas, 0, datas.Length, "UTF8")
Catch
Log($"AES: ${LastException}"$)
Return ""
End Try
End Sub