我的任务是制作加密程序,部分任务是加密/解密文件夹。
加密工作正是我想要的,但是当我尝试解密时,它给我一个错误:
“要解密的数据长度无效”。
我可以说我真正改变的是我在加密代码中使用DES.CreateDecryptor
而不是DES.CreateEncryptor
。虽然它看起来比工作更多。
只是想知道我是如何解决这个问题的。我将保留下面代码的相关部分。
Dim folderinfo As New DirectoryInfo(folderpath)
For Each File In Directory.GetFiles(folderinfo.FullName)
Dim outputFile As String
outputFile = File
Dim fsInput As New FileStream(File, FileMode.Open, FileAccess.Read)
Dim bytearrayinput(fsInput.Length) As Byte
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
fsInput.Close()
Dim skey As String
skey = Encrypt
Dim fsDecrypted As New FileStream(File, FileMode.Create, FileAccess.Write)
Dim DES As New DESCryptoServiceProvider
DES.Key = ASCIIEncoding.ASCII.GetBytes(skey)
DES.IV = ASCIIEncoding.ASCII.GetBytes(skey)
Dim desdecrypt As ICryptoTransform
desdecrypt = DES.CreateDecryptor()
Dim cryptostream As New CryptoStream(fsDecrypted, desdecrypt, CryptoStreamMode.Write)
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
cryptostream.Close()
fsDecrypted.Close()
txtDecrypt.Text = "All files decrypted"
答案 0 :(得分:0)
在实例化 array 时,您犯了一个经典错误。应使用(n - 1)的大小来实例化数组,其中 n 是元素的数量。要设置正确的大小,您所要做的就是从fsInput
长度中减去1。
Dim bytearrayinput(fsInput.Length - 1) As Byte