C# “;填充无效,无法删除”;使用AES加密时
加密程序工作,而解密程序不工作。 我尝试了多种类型的流,但没有成功。 出现错误“填充无效且无法删除”C# “;填充无效,无法删除”;使用AES加密时,c#,encryption,error-handling,aes,C#,Encryption,Error Handling,Aes,加密程序工作,而解密程序不工作。 我尝试了多种类型的流,但没有成功。 出现错误“填充无效且无法删除”cryptoStream.CopyTo(fileDataSend) 我试着在网上查找,但是当我把我的项目与其他项目进行比较,或者甚至与这个主题的教程进行比较时,我发现我有一个几乎相同的代码。 我已经在这个问题上纠缠了好几天了,特别是对这个问题做出了解释。 请帮忙 if (encryptFunction.Checked) {
cryptoStream.CopyTo(fileDataSend)代码>
我试着在网上查找,但是当我把我的项目与其他项目进行比较,或者甚至与这个主题的教程进行比较时,我发现我有一个几乎相同的代码。
我已经在这个问题上纠缠了好几天了,特别是对这个问题做出了解释。
请帮忙
if (encryptFunction.Checked)
{
//try
//{
//Collect the content of file and password and then encrypt
using (var fileDataOpen = File.OpenRead(filepathTextbox.Text))
using (var aesCrypto = new AesCryptoServiceProvider())
{
HashAlgorithm hash = MD5.Create();
aesCrypto.Key = hash.ComputeHash(Encoding.Unicode.GetBytes(passwordTextbox.Text));
aesCrypto.Padding = PaddingMode.PKCS7;
using (var createCrypto = aesCrypto.CreateEncryptor(aesCrypto.Key,aesCrypto.IV))
using (var fileDataSend = File.Create(filepathTextbox.Text + " Encrypted"))
using (var cryptoStream = new CryptoStream(fileDataSend, createCrypto, CryptoStreamMode.Write))
{
fileDataOpen.CopyTo(cryptoStream);
}
}
/*}
catch
{
MessageBox.Show("Couldn't read the file. Please close other programs");
return;
}*/
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Decrypter, not yet done
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if (decryptFunction.Checked)
{
//try
//{
//Collect the data from file and password to decrypt
using (var fileDataOpen = File.OpenRead(filepathTextbox.Text))
using (var aesCrypto = new AesCryptoServiceProvider())
{
HashAlgorithm hash = MD5.Create();
aesCrypto.Key = hash.ComputeHash(Encoding.Unicode.GetBytes(passwordTextbox.Text));
aesCrypto.Padding = PaddingMode.PKCS7;
using (var createDecrypto = aesCrypto.CreateDecryptor(aesCrypto.Key, aesCrypto.IV))
using (var fileDataSend = File.Create(filepathTextbox.Text.Replace(" Encrypted", " Decrypted")))
using (MemoryStream ms = new MemoryStream())
{
using (var cryptoStream = new CryptoStream(fileDataOpen, createDecrypto, CryptoStreamMode.Read))
{
cryptoStream.CopyTo(fileDataSend);
}
}
}
}
/*}
catch
{
MessageBox.Show("Make sure you selected the right file");
return;
}*/
保存加密数据的文件是您应该打开以解密的文件。他们是不同的。