PDF的加密解密,解密后随便怎么玩

摘要:
首先,我们要清楚PDF的加密类型和方式:PDF的密码常规分为两类:user password 和 owner password,

user password(用户密码):我们要打开/查看/获取任何该PDF的信息所需要的密码,也就是任何viewer和编辑软件打开此PDF需要输入的,等于一把外部锁,没有钥匙,you can get nothing
owner password(权限密码):一般是针对PDF内容的加密,分级别,一般的设置是可以print,但是不能edit,copy等,是PDF所有者保证版权的手段

对于一个同时拥有两种密码的PDF,我们可以做的有限(如果知道PDF的加密方式是早期的40bit的RC4算法,那么现在一些暴力破解软件可以强行破解,但如果是现代的128bit或256bit的加密,暴力破解的可能性很小)

我们要讨论的是没有user password,但是有owner password的PDF的处理方式,而且我们遇到的绝大多是加密的PDF都是这种加密方式,他的潜台词是:你可以看,但你不能改。那种设置了双重密码的PDF,是不让看,更不让改,所以流传出来的几率很小,好了,废话少说,言归正传:

怎么处理:批量解密
使用工具:java 的 PDF 处理模块itext(题外:之前此功能作为itext的一个bug存在,5.3.5以后被修复)
关键代码:
1.自定义解密类:

class MyReader extends PdfReader {
    public MyReader(String filename) throws IOException {
        super(filename);
    }
    public void decryptOnPurpose() {
        encrypted = false;
    }
}

2.关键参数设置,实例化类:

PdfReader.unethicalreading = true;
MyReader reader = new MyReader(src);

3.解密成功,另存为就好了

PdfStamper s = new PdfStamper(outputstream, reader);
s.close();
reader.close();

加密就好说了,随便找软件,插件都能加上,不在此啰嗦

打完收工,没想到PDF的加密这么容易被绕过去(注意并不是真正意义上的破解到了密码)
至于解密后怎么玩,请参看楼主早期日志

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值