【发布时间】:2017-09-15 09:41:28
【问题描述】:
我正在使用以下代码来保护使用 iTextsharp 库的 PDF 文件。
public Boolean ProtectPDF(String sourceFile, String newFile, String UserPassword, String OwnerPassword)
{
try
{
byte[] USER = System.Text.Encoding.ASCII.GetBytes(UserPassword);
byte[] OWNER = System.Text.Encoding.ASCII.GetBytes(OwnerPassword);
PdfReader reader = new PdfReader(sourceFile);
PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create));
stamper.SetEncryption(USER, OWNER, PdfWriter.AllowPrinting, PdfWriter.ENCRYPTION_AES_128);
stamper.Close();
reader.Close();
return true;
}
catch (Exception)
{
return false;
}
}
它适用于“短”密码,例如 1234567890ABCDE=GHIJ12。
如果我尝试使用“长”密码,例如 2017DgFLcnODOy8=7D-+0|Fk/2?g-=02d^xz-d3s@2|WiuXjQJoRBU= ,我发现只有 前 32 个字符 被识别为密码,我输入的字符似乎无关紧要,但 PDF 文件仍会打开。
PDF 或 ITextsharp 库是否有任何限制,或者问题出在代码中?
请指教,谢谢。
【问题讨论】: