我正在使用以下代码来保护使用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库是否有任何限制,或问题是否存在于代码中?
请告知,谢谢。