You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ghostscript生成PDF 2.0加密文件为何采用过时RC4算法?

Ghostscript生成PDF 2.0加密文件却使用RC4算法的问题与解决

最近我碰到一个挺头疼的小问题:明明用Ghostscript生成了标注为PDF 2.0版本的加密PDF(这个版本本身支持Unicode密码保护),结果用pdfinfo工具检测时,却发现它用了已经过时的RC4加密算法。

我最初用的生成命令

当时执行的Ghostscript命令是这样的,本意是生成符合PDF 2.0标准的加密文件:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=protect.pdf -sOwnerPassword=pwd1 -sUserPassword=pwd2 -dCompatibilityLevel=2.0 test.pdf

检测结果

用pdfinfo验证加密情况时,执行了这条命令:

pdfinfo protect.pdf -upw pwd2

得到的检测信息里,关键的加密部分显示为RC4:

CreationDate: Sat Apr 21 09:10:14 2018 CEST
ModDate: Sat Apr 21 09:10:14 2018 CEST
Tagged: no
UserProperties: no
Encrypted: yes (RC4)
PDF version: 2.0

问题原因

查了Ghostscript的文档才搞明白:即使指定了-dCompatibilityLevel=2.0,它默认还是会 fallback 到RC4加密。这是因为Ghostscript默认没有启用AES加密选项,而AES才是PDF 2.0官方推荐的安全加密算法。

解决方法

要让生成的PDF 2.0文件使用符合标准的AES加密,只需要在命令里新增两个参数即可:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=protect.pdf -sOwnerPassword=pwd1 -sUserPassword=pwd2 -dCompatibilityLevel=2.0 -dUseAES=true -dEncryptionR=256 test.pdf

这两个参数的作用分别是:

  • -dUseAES=true:强制启用AES加密算法,替代默认的RC4
  • -dEncryptionR=256:指定使用256位的AES加密,完全匹配PDF 2.0的安全要求

重新生成文件后再用pdfinfo检测,就能看到加密算法变成AES了,同时PDF版本依然保持2.0,完美解决了这个问题。

内容的提问来源于stack exchange,提问作者Manuel Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:34:59