摘要:
首先,我们要清楚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的加密这么容易被绕过去(注意并不是真正意义上的破解到了密码)
至于解密后怎么玩,请参看楼主早期日志

PDF的加密解密,解密后随便怎么玩相关推荐

  1. 实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!

    来源/早起Python 本文将分享如何利用 Python 对 PDF 进行加密和解密操作,主要利用到之前多次介绍过的PyPDF2 模块. PDF 加密 在之前的文章PDF合并.拆分.水印.加密中简单提 ...

  2. 【好用的办公软件】万彩办公大师教程丨PDF安全加密解密

    关于万彩办公大师的PDF安全加密解密工具 能给PDF文件添加密码,修改PDF文件打开密码以及复制打印PDF等权限设置(解密前提是知道当前PDF文件的密码,并非暴力破解).软件允许添加和解开不同类型密码 ...

  3. java加密解密 pdf_Java 加密和解密PDF文档

    前言 在日常办公时,为了保护文档不被他人篡改,我们可为文档设置打开口令,即加密.同时,因需要我们也可对加密文档进行解密,以便能够查看和编辑文档.本文将通过Java程序来演示如何对PDF文档进行加密和解 ...

  4. 9款PDF加密和解密工具

    转自:http://paranimage.com/9-pdf-encryption-and-decryption-tools/ A-PDF Restrictions Remover 让你可以立刻移除P ...

  5. PDF加密、解密内幕(一) PDF加密字典对象分析

    PDF加密.解密内幕(一) - PDF加密字典对象分析 0 几个关键词的说明 PDF加密有两个口令即:Owner(to set the pdf document Permission or chang ...

  6. PDF加密文件解密方法(解除复制打印限制)——转帖

    PDF加密文件解密方法(解除复制打印限制) 小 前言:因为现在网络上下载的PDF文件很多都带有安全性设置,通常的安全设置有:文档打印不允许.更改文档不允许.内容复制或提取不允许等等.在实际运用中,我们 ...

  7. PDF加密、解密内幕(二)- PDF文件口令加密内幕

    0 几个重要概念 全局加密密钥,简称为全局密钥,该全局密钥由加密字典对象和你输入的口令生成,用来生成对象加密密钥. 对象加密密钥,简称为对象密钥,是用来实际加密PDF文件内容的密钥,不同于上篇PDF加 ...

  8. PDF加密、解密内幕(二) - PDF文件口令加密内幕

    PDF加密.解密内幕(二) - PDF文件口令加密内幕 0 几个重要概念 全局加密密钥,简称为全局密钥,该全局密钥由加密字典对象和你输入的口令生成,用来生成对象加密密钥. 对象加密密钥,简称为对象密钥 ...

  9. PDF加密、解密内幕(一)- (PDF加密字典对象分析)

    PDF加密.解密内幕(一) - PDF加密字典对象分析 0 几个关键词的说明 PDF加密有两个口令即:Owner(to set the pdf document Permission or chang ...

最新文章

  1. spring 组件基于注解的注册方式
  2. java同步队列与阻塞队列
  3. caffe 安装方法和记录
  4. OpenStack neutron中AsyncProcess类
  5. golang用数组作为函数参数
  6. 6.神操作(把master上的三个安装包scp给slave)—Hadoop完全分布式搭建完成
  7. 解决Linux下启动Tomcat遇到Neither the JAVA_HOME nor the JRE_HOME environment variable is defined...
  8. 1.3编程基础之算术表达式与顺序执行 12 计算球的体积
  9. html设置垂直高度,html – 具有垂直文本的100%高度块
  10. 在回调中获取Url参数
  11. 36.Linux驱动调试-根据oops定位错误代码行
  12. chmod 更改文件的权限
  13. python提取html表格_用Python抓取HTML表格
  14. html+CSS+JS实现小米官网(附全部代码)
  15. OpenGL with QtWidgets:材质、光照贴图
  16. CCS中CMD文件详解
  17. 央视力荐的这套书,让5岁孩子看漫画,秒懂物理,学习早“开窍”!
  18. 最大熵阈值python_使用python进行普适计算
  19. 【总结】1268- 几个前端代码部署的灵魂拷问
  20. 根据php经纬度百度地图打点,PHP使用百度地图获取指定地址坐标:经纬度(图文+视频)...

热门文章

  1. Protobuf 介绍与实战30:google/protbuf/any.proto, api.proto, descriptor.proto,empty.proto 在什么位置
  2. 210127 课内整理
  3. 玉米、水稻、甘蔗等农作物图片数据集
  4. 解决移动硬盘不能弹出问题
  5. 移动硬盘弹出时总是显示被占用,解决方案
  6. 【NFS服务】Linux/Ubuntu 搭建NFS服务器
  7. linux开机启动动画
  8. 论文阅读笔记(1):Deep Animation Video Interpolation in the Wild——野外深度动画视频插值(2021CVPR)
  9. 电话自动拨号自动录音
  10. 火拼商城:4亿乡村新中产正在消费升级!