我实现了一个使用 .NET 框架加密 PDF 的类,如此处示例中所述。它使用AESManaged
算法来进行加密。
该方法效果很好,我能够加密文档。但我的问题是我无法使用任何 PDF 查看器打开该文件。据我所知,使用任何兼容 AES 的 PDF 查看器,我们应该能够在提供用于加密文档的密钥后打开 PDF。
我尝试使用 Adobe 11.0.02、Preview 6.0.1、PDFView 0.14.3、Skim 1.4.3 和 Google Chrome。但他们每个人都检测到文件已损坏。有人可以告诉我有什么问题吗?
我添加了以下代码:
using (AesManaged aesAlg = new AesManaged())
{
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();
}
}
}