C# c语言中的AES加密#

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

我尝试使用示例MSDN对文件进行加密
当我加密一个.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);
这可能会帮助您: