您的位置:首页 > 其它

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

2016-01-05 17:38 113 查看
摘要:

首先,我们要清楚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的加密这么容易被绕过去(注意并不是真正意义上的破解到了密码)

至于解密后怎么玩,请参看楼主早期日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: