PDDocument pd = PDDocument.load(path);
if(pd.isEncrypted()){
try {
pd.decrypt("");
pd.setAllSecurityToBeRemoved(true);
} catch (Exception e) {
throw new Exception("The document is encrypted, and we can't decrypt it.");
}
Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1601)
at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:948)
...
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
...
路径是正确的,所以我不知道是怎么回事。此外,如果我查看pdDocument.decrypt(String pw)方法,我会发现:这将解密一个文档。提供此方法仅出于兼容性原因。用户应该使用新的安全层,特别是openProtection方法。
这是什么意思?谁能给出一个如何用PDFBOX正确解密PDF文档的例子吗?
请参阅依赖项列表:https://pdfbox.apache.org/1.8/dependencies.html
您需要使用bouncycastle库。
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
<version>1.44</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15</artifactId>
<version>1.44</version>
</dependency>
decrypt()调用在当前版本(1.8.9)中确实不推荐使用。使用
pd.openProtection(new StandardDecryptionMaterial(""));
我在微控制器和nodejs tcp服务器之间来回通信。微控制器与传感器数据形成json字符串。然后,微控制器将json字符串发送到WiFi模块。然后,WiFi模块使用AES256加密数据,将32个字符的十六进制字符作为密钥,然后再将加密数据发送到nodejs tcp服务器。 nodejs TCP服务器使用Google Code Crypto JS的Crypto JS模块形式。 出于测试目的,我想将
我有一个文本文件,我已经加密使用移位,但我需要加密加密的文本再次,但这一次使用vigenere密码。然后我需要解密加密的文本(首先是vigenere,然后是Shift),但所有的大小写字母以及黑色空格、引号、逗号和句号都需要保持不变。我已经完成了移位、加密和解密,剩下的就是Vigenere了。下面显示的是我加密Vigenere的类,我还没有写解密,因为我被卡在加密步骤。谢谢你。
问题内容: 当我尝试使用示例之一提取图像时,在运行时出现以下异常: 这是最后两行中发生异常的代码部分: 问题答案: 在您的lib目录中添加commons-logging-1.1.1.jar或jcl-over-slf4j-1.7.6.jar。
我已经将示例项目放入GitHub:https://github.com/marioosh-net/pdfbox
下面的hs_err_pid.log是在我的JVM崩溃时生成的。我在试着弄明白是什么引起的。如有任何意见,将不胜感激。谢谢. Java运行时环境检测到一个致命错误: SIGSEGV(0xB)在PC=0x00007F0E74C29E7D,PID=61623,TID=139695284021008 JRE版本:6.0_45-B06 Java VM:Java热点(TM)64位服务器VM(20.45-B01
一旦我运行了它,我就得到了python shell上的以下代码。假设消息变量是“My name is Daniel”,我使用的shiftValue为2。这是打印出来的: