88 lines
3.7 KiB
VB.net
88 lines
3.7 KiB
VB.net
Imports ThoughtWorks.QRCode.Codec
|
|
Imports System.IO
|
|
Imports System.Security.Cryptography
|
|
Imports System.Text
|
|
|
|
Public Class frmQRCode
|
|
|
|
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
|
|
Dim img As Image
|
|
Dim bmp As Bitmap
|
|
Dim QR As New QRCodeEncoder
|
|
|
|
QR.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE
|
|
QR.QRCodeScale = 2
|
|
QR.QRCodeVersion = 5
|
|
QR.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L
|
|
img = QR.Encode("TEST DATA")
|
|
bmp = New Bitmap(img)
|
|
bmp.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.bmp")
|
|
pic.ImageLocation = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\test.bmp"
|
|
End Sub
|
|
|
|
|
|
|
|
Dim Aes256Base64Encrypter As New Aes256Base64Encrypter
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|
Try
|
|
TextBox1.Text = Aes256Base64Encrypter.Encrypt(txt.Text, TextBox2.Text)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
|
Try
|
|
txt.Text = Aes256Base64Encrypter.Decrypt(TextBox1.Text, TextBox2.Text)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
|
|
|
|
End Sub
|
|
End Class
|
|
Public Class Aes256Base64Encrypter
|
|
Public Function Encrypt(ByVal plainText As String, ByVal secretKey As String) As String
|
|
Dim encryptedPassword As String = Nothing
|
|
Using outputStream As MemoryStream = New MemoryStream()
|
|
Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
|
|
Using cryptoStream As CryptoStream = New CryptoStream(outputStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write)
|
|
Dim inputBuffer() As Byte = Encoding.Unicode.GetBytes(plainText)
|
|
cryptoStream.Write(inputBuffer, 0, inputBuffer.Length)
|
|
cryptoStream.FlushFinalBlock()
|
|
encryptedPassword = Convert.ToBase64String(outputStream.ToArray())
|
|
End Using
|
|
End Using
|
|
Return encryptedPassword
|
|
End Function
|
|
|
|
Public Function Decrypt(ByVal encryptedBytes As String, ByVal secretKey As String) As String
|
|
Dim plainText As String = Nothing
|
|
Using inputStream As MemoryStream = New MemoryStream(Convert.FromBase64String(encryptedBytes))
|
|
Dim algorithm As RijndaelManaged = getAlgorithm(secretKey)
|
|
Using cryptoStream As CryptoStream = New CryptoStream(inputStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)
|
|
Dim outputBuffer(0 To CType(inputStream.Length - 1, Integer)) As Byte
|
|
Dim readBytes As Integer = cryptoStream.Read(outputBuffer, 0, CType(inputStream.Length, Integer))
|
|
plainText = Encoding.Unicode.GetString(outputBuffer, 0, readBytes)
|
|
End Using
|
|
End Using
|
|
Return plainText
|
|
End Function
|
|
|
|
Private Function getAlgorithm(ByVal secretKey As String) As RijndaelManaged
|
|
Const salt As String = "AES" '??
|
|
Const keySize As Integer = 256
|
|
|
|
Dim keyBuilder As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(secretKey, Encoding.Unicode.GetBytes(salt))
|
|
Dim algorithm As RijndaelManaged = New RijndaelManaged()
|
|
algorithm.KeySize = keySize
|
|
algorithm.IV = keyBuilder.GetBytes(CType(algorithm.BlockSize / 8, Integer))
|
|
algorithm.Key = keyBuilder.GetBytes(CType(algorithm.KeySize / 8, Integer))
|
|
algorithm.Padding = PaddingMode.PKCS7
|
|
Return algorithm
|
|
End Function
|
|
End Class |