大佬教程收集整理的这篇文章主要介绍了在VB.Net中进行简单的加密/解密,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我按照给出的示例给出了here并编写了以下代码(如下).有一个文本框,一个“加密”按钮和一个“解密”按钮.想法是在文本框中键入内容(“喜欢’Hello world’”),单击“加密”,然后在文本框中看到加密版本.单击“解密”应该会将您带回原始字符串.
但是当我尝试加密时,当我尝试“FlushFinalBlock”时出现错误.错误是:“要加密的数据长度无效”.
“解密”部分是黑暗中的总镜头,因为上面引用的示例仅涉及加密,而不是解密.我确定这是错的,但由于我无法“加密”工作,我还没有测试过.
谁能告诉我为什么这不起作用?
Imports System.Data.SqlClient Imports System.IO Imports System.Security.Cryptography Public Class Form1 Private cryptObj As RijndaelManaged Private KEY_128 As Byte() = {42,1,52,67,231,13,94,101,123,6,12,32,91,4,111,31,70,21,141,142,234,82,95,129,187,162,55,98,23} Private IV_128 As Byte() = {234,44,214,222,200,109,2,45,76,88,53,23,78} Private enc As System.Text.UTF8Encoding = New System.Text.UTF8Encoding() 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 bPlaintext As Byte() = Me.enc.GetBytes(Me.TextBox1.Text) Dim ms As MemoryStream = New MemoryStream() Dim cs As CryptoStream = New CryptoStream(ms,cryptObj.CreateEncryptor(),CryptoStreAMMode.WritE) cs.Write(bPlaintext,sPlaintext.Length) cs.FlushFinalBlock() Me.TextBox1.Text = Me.enc.GetString(ms.ToArray()) End If End Sub Private Sub btnDecrypt_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnDecrypt.Click Dim sCipherText = Me.TextBox1.Text Dim ms As MemoryStream = New MemoryStream() Dim cs As CryptoStream = New CryptoStream(ms,cryptObj.CreateDecryptor(),CryptoStreAMMode.Read) cs.Read(Me.enc.GetBytes(sCipherText),sCipherText.Length) Me.TextBox1.Text = Me.enc.GetString(ms.ToArray()) End Sub Private Sub Form1_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load Me.cryptObj = New RijndaelManaged() Me.cryptObj.blockSize = 128 Me.cryptObj.KeySize = 128 Me.cryptObj.Mode = CipherMode.ECB Me.cryptObj.Padding = PaddingMode.None Me.cryptObj.Key = KEY_128 Me.cryptObj.IV = IV_128 End Sub End Class
http://www.obviex.com/samples/Encryption.aspx
他的例子似乎有点过于复杂.我敢肯定它代表了一个更通用和灵活的情况,但我能够取消“saltPhrase”,“initVector”和“passwordDeriveBytes”的使用,显然已被弃用了,但我也避免了它被命名为替换:Rfc2898DeriveBytes.
以下内容允许您输入任意长度的字符串,对其进行加密并重新解密.
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),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,plaintextBytes.Length) memoryStream.Close() cryptoStream.Close() Me.TextBox1.Text = Me.enc.GetString(plaintextBytes,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,23} Dim IV_128 As Byte() = {234,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
以上是大佬教程为你收集整理的在VB.Net中进行简单的加密/解密全部内容,希望文章能够帮你解决在VB.Net中进行简单的加密/解密所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。