simple encrypting / decrypting in VB.Net

后端 未结 4 1125
执笔经年
执笔经年 2020-12-28 10:55

I\'m trying to figure out how to encrypt / decrypt a string in VB.Net.

I followed the example given here and wrote the following code (below). There\'s a text box,

4条回答
  •  既然无缘
    2020-12-28 11:44

    Ultimately I found the answer here:

    http://www.obviex.com/samples/Encryption.aspx

    His example seems a little over-complicated. I'm sure it represents a more general and flexible case, but I was able to do away with the "saltPhrase", the "initVector", and the use of "PasswordDeriveBytes", which apparently is deprecated anyway, but I also avoided its nastily named replacement: Rfc2898DeriveBytes.

    The following lets you enter a string of any length, encrypt it, and re-decrypt it.

    Imports System.Data.SqlClient
    Imports System.IO
    Imports System.Security.Cryptography
    
    Public Class Form1
    
      Private enc As System.Text.UTF8Encoding
      Private encryptor As ICryptoTransform
      Private decryptor As ICryptoTransform
    
      Private Sub btnEncrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncrypt.Click
        Dim sPlainText As String = Me.TextBox1.Text
        If Not String.IsNullOrEmpty(sPlainText) Then
          Dim memoryStream As MemoryStream = New MemoryStream()
          Dim cryptoStream As CryptoStream = New CryptoStream(memoryStream, Me.encryptor, CryptoStreamMode.Write)
          cryptoStream.Write(Me.enc.GetBytes(sPlainText), 0, sPlainText.Length)
          cryptoStream.FlushFinalBlock()
          Me.TextBox1.Text = Convert.ToBase64String(memoryStream.ToArray())
          memoryStream.Close()
          cryptoStream.Close()
        End If
      End Sub
    
      Private Sub btnDecrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecrypt.Click
        Dim cypherTextBytes As Byte() = Convert.FromBase64String(Me.TextBox1.Text)
        Dim memoryStream As MemoryStream = New MemoryStream(cypherTextBytes)
        Dim cryptoStream As CryptoStream = New CryptoStream(memoryStream, Me.decryptor, CryptoStreamMode.Read)
        Dim plainTextBytes(cypherTextBytes.Length) As Byte
        Dim decryptedByteCount As Integer = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length)
        memoryStream.Close()
        cryptoStream.Close()
        Me.TextBox1.Text = Me.enc.GetString(plainTextBytes, 0, decryptedByteCount)
      End Sub
    
      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim KEY_128 As Byte() = {42, 1, 52, 67, 231, 13, 94, 101, 123, 6, 0, 12, 32, 91, 4, 111, 31, 70, 21, 141, 123, 142, 234, 82, 95, 129, 187, 162, 12, 55, 98, 23}
        Dim IV_128 As Byte() = {234, 12, 52, 44, 214, 222, 200, 109, 2, 98, 45, 76, 88, 53, 23, 78}
        Dim symmetricKey As RijndaelManaged = New RijndaelManaged()
        symmetricKey.Mode = CipherMode.CBC
    
        Me.enc = New System.Text.UTF8Encoding
        Me.encryptor = symmetricKey.CreateEncryptor(KEY_128, IV_128)
        Me.decryptor = symmetricKey.CreateDecryptor(KEY_128, IV_128)
      End Sub
    
    End Class
    

提交回复
热议问题