我们加密的PDF被黑了

时间:2011-03-16 14:42:23

标签: java security pdf encryption itext

我们正在使用以下iText代码加密我们的PDF。但是,有人能够编辑我们的pdf(我不知道如何)。

pdfWriter.setEncryption(null, null, PdfWriter.ALLOW_SCREENREADERS
    | PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING,
    PdfWriter.ENCRYPTION_AES_128);

我们有更好的方法来保护PDF格式以防止这种情况发生吗?

4 个答案:

答案 0 :(得分:9)

PDF加密和限制信息依赖于纯粹来强调观众软件作者的善意,以实施该限制。

一般来说,每个具有显示 PDF信息的应用程序都有足够的信息来打印 PDF,你无能为力。

由于那里有大量的开源PDF查看器,因此很容易生成一个忽略这些限制的查看器。

有关详细信息,请参阅this explanation of the PDF encryption mechanism

答案 1 :(得分:3)

如果您的PDF使用128位AES加密,那么对于不知道密钥的人来说是安全的,最合理的解释是有人可以访问该密钥。

您可以考虑使用RSA签署PDF,这是确保它没有受到损害的好方法。

答案 2 :(得分:1)

如果密码足够长,加密会阻止查看pdf。

DRM功能允许查看但禁用其他功能,如打印,编辑......仅在阅读器合作时才有效。用户可以使用黑客或第三方阅读器来规避此类限制。

答案 3 :(得分:0)

添加用户密码。这是唯一真正重要的。毫无疑问,从其他答案中可以看出,所有者密码有点儿玩笑。

用户密码是强大的加密......最高可达256位AES IIRC,尽管最初的PDF加密规范仅允许因美国出口限制而进行40位加密。任何强于40比特的东西都被认为是“弹药”。高飞法则。

OWNER密码不是,它比其他任何东西更礼貌。 PDF库试图在某种程度上支持它,但开源PDF库是一种快速的代码更改,远离“pdf破解者”。

空白用户密码表示“使用PDF规范中列出的任何人都可以下载的预定义字符串”。 PDF的内容仍然是加密的,但是每个人都知道密码,所以它对你没什么好处。如果没有密码,PDF查看器/库将替换此字节串。

PS:

致电setEncryption时:

  • null打开密码表示“空白密码”,如上所述
  • null 所有者密码表示“为我生成随机密码”。

随机所有者密码表示“没有人可以合法修改PDF”..但这并不意味着“没有人可以修改PDF”。