C# c语言中的AES加密#
我尝试使用示例MSDN对文件进行加密C# c语言中的AES加密#,c#,encryption,aes,C#,Encryption,Aes,我尝试使用示例MSDN对文件进行加密 当我加密一个.txt文件时,一切正常,但当我尝试加密其他文件(.bmp、.pdf…)时,该文件不会被解密。 错误在哪里 我修改了代码来下载文件 internal static void EncryptAes(string pathData, string pathEnCrypt) { string plainText; using (StreamReader sr = new StreamReader(pathData
当我加密一个.txt文件时,一切正常,但当我尝试加密其他文件(.bmp、.pdf…)时,该文件不会被解密。 错误在哪里 我修改了代码来下载文件
internal static void EncryptAes(string pathData, string pathEnCrypt)
{
string plainText;
using (StreamReader sr = new StreamReader(pathData))
plainText = sr.ReadToEnd();
byte[] encrypted;
// Create an Aes object
// with the specified key and IV.
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Key;
aesAlg.IV = IV;
// Create a decrytor to perform the stream transform.
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
// Create the streams used for encryption.
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
//Write all data to the stream.
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
using (FileStream fstream = new FileStream(pathEnCrypt, FileMode.Create))
fstream.Write(encrypted, 0, encrypted.Length);
}
}
应该在特定编码中使用文本数据。因此,不能将其用于二进制数据
如果文件不是很大,您可以将文件内容读入AES并在AES中使用。应该在特定编码中处理文本数据。因此,不能将其用于二进制数据
如果文件不是很大,您可以将文件内容读入AES,并在AES中使用。将十六进制/二进制数据当作字符串处理,将导致数据丢失,因此您无法完全恢复数据。为了了解/了解您可能想要查看的更多信息,它解释了您希望对VB.NET执行的操作将十六进制/二进制数据视为字符串,这将导致数据丢失,因此无法完全恢复数据。为了了解/了解您可能想要查看的更多信息,它解释了您希望对VB.NET执行的操作“当我尝试加密其他文件(.bmp、.pdf…)时,该文件不会被解密。”您的意思是“那么该文件不会被加密”吗?还是真的是后来的解密失败了?它被加密了,因为它很奇怪,文件的大小增加了一半。然后它可以解密,但打开它仍然不起作用。您可以尝试使用BinaryReader和BinaryWriter(而不是StreamReader和StreamWriter),因为bmp等是二进制文件…注释和代码不匹配:decrytor和CreateEncryptor<代码>//创建decrytor以执行流转换。ICryptoTransform encryptor=aesAlg.CreateEncryptor(((aesAlg.Key,aesAlg.IV);这可能会帮助您:“当我尝试加密其他文件(.bmp.pdf…)时,该文件不会被解密。”您的意思是“那么该文件不会被加密”?还是真的是后来的解密失败了?它被加密了,因为它很奇怪,文件的大小增加了一半。然后它可以解密,但打开它仍然不起作用。你可以尝试使用BinaryReader和BinaryWriter代替吗(不是StreamReader和StreamWriter)由于bmp等是二进制文件…注释和代码不匹配:decrytor和CreateEncryptor。
//创建decrytor以执行流转换。ICryptoTransform encryptor=aesAlg.CreateEncryptor(((aesAlg.Key,aesAlg.IV);
这可能会帮助您: