Шифрование и дешифрование
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Public Class EncDecCls
Private tripleDES As New TripleDESCryptoServiceProvider
'Public Sub New(_KEY As String)
' KeyStr = _KEY
'End Sub
'Private KeyValue As String
'Public Property KeyStr() As String
' Get
' Return KeyValue
' End Get
' Set(value As String)
' KeyValue = value
' End Set
'End Property
Function Encryption(ByVal datafile As String) As String
Dim input As Byte() = System.Text.Encoding.Unicode.GetBytes(datafile)
Dim ms As New System.IO.MemoryStream
Dim encstream As New CryptoStream(ms, tripleDES.CreateEncryptor(),
System.Security.Cryptography.CryptoStreamMode.Write)
encstream.Write(input, 0, input.Length)
encstream.FlushFinalBlock()
Return Convert.ToBase64String(ms.ToArray)
End Function
Function Decryption(ByVal encryptedfile As String) As String
Dim output() As Byte = System.Text.Encoding.Unicode.GetBytes(encryptedfile)
Dim ms As New System.IO.MemoryStream
Dim decstream As New CryptoStream(ms, tripleDES.CreateDecryptor(),
System.Security.Cryptography.CryptoStreamMode.Write)
decstream.Write(output, 0, output.Length)
decstream.FlushFinalBlock()
Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
End Function
End Class
Код для извлечения данных из базы данных и их расшифровки, а затем для отображения в datagridview (DGVSV)
Dim cmd1 As New OleDbCommand("SELECT * FROM pwdmgr WHERE username = @uname", conn)
cmd1.Parameters.Add("@uname", OleDbType.VarChar).Value = x
conn.Open()
dr = cmd1.ExecuteReader
dr.Read()
DGVSV.Rows.Add(dr.Item("id").ToString,
EncryptDecryptFiles.Decryption(dr.Item("email").ToString),
EncryptDecryptFiles.Decryption(dr.Item("pwd").ToString))
conn.Close()
Необходимо извлечь несколько строк данных и отобразить их в представлении сетки данных (DGVSV). Каждый раз, когда я запускаю эту функцию выше, она показывает эту ошибку System.Security.Cryptography.CryptographicException: «Bad Data. '
Может ли кто-нибудь помочь мне в этом?
FlushFinalBlock()
при расшифровке данных из базы данных - person Khohula Rhaj   schedule 19.03.2021Key
иIV
для обоих преобразований? Создание шифраторов и дешифраторов таким образом генерирует разные значенияKey
иIV
каждый раз, когда вы их вызываете. См. это и это Например. - person dr.null   schedule 19.03.2021CryptoStream
, а не записывать в него? Это риторический вопрос. Да, вы должны читать из него, но это не так. Я предлагаю вам немного изучить, как расшифровывать данные, потому что это не так. - person jmcilhinney   schedule 19.03.2021Using ... End Using
блоках. - person dr.null   schedule 19.03.2021Dim output() As Byte = System.Text.Encoding.Unicode.GetBytes(encryptedfile) Dim ms As New System.IO.MemoryStream Using decstream As New CryptoStream(ms, tripleDES.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write) decstream.Write(output, 0, output.Length) decstream.FlushFinalBlock() End Using
Это что-то вроде этого? - person Khohula Rhaj   schedule 19.03.2021