package com.test;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class PdfEncDecTest {
static String pdfPath = "G:\\files\\filed5b3.pdf";
public final static String PDF_OWNER_PASSWORD = "cd1j";
public final static String PDF_USER_PASSWORD = "";
public static void main(String[] args) throws Exception {
PDDocument document = PDDocument.load(pdfPath);
AccessPermission ap = new AccessPermission();
ap.setCanPrint(true);
ap.setCanExtractContent(false);
ap.setCanExtractForAccessibility(false);
StandardProtectionPolicy spp = new StandardProtectionPolicy(PDF_OWNER_PASSWORD, PDF_USER_PASSWORD, ap);
document.protect(spp);
document.save(pdfPath+".pdf");
document.close();
PDDocument doc = PDDocument.load(pdfPath+".pdf");
if(doc.isEncrypted()) {
StandardDecryptionMaterial sdm = new StandardDecryptionMaterial(PDF_OWNER_PASSWORD);
doc.openProtection(sdm); // org.apache.pdfbox.exceptions.CryptographyException: Error: The supplied password does not match either the owner or user password in the document.
doc.decrypt(PDF_OWNER_PASSWORD); // the same like above
}
doc.close();
}
}
Exception in thread "main" org.apache.pdfbox.exceptions.CryptographyException: Error: The supplied password does not match either the owner or user password in the document.
at org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler.prepareForDecryption(StandardSecurityHandler.java:265)
at org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler.decryptDocument(StandardSecurityHandler.java:156)
at org.apache.pdfbox.pdmodel.PDDocument.openProtection(PDDocument.java:1595)
at org.apache.pdfbox.pdmodel.PDDocument.decrypt(PDDocument.java:942)
at com.test.PdfEncDecTest.main(PdfEncDecTest.java:29)
我已经将示例项目放入GitHub:https://github.com/marioosh-net/pdfbox
您需要用户密码。
if (doc.isEncrypted())
{
StandardDecryptionMaterial sdm = new StandardDecryptionMaterial(PDF_USER_PASSWORD);
doc.openProtection(sdm);
// don't call decrypt() here
}
即使用户密码不为NULL,也可以执行此操作。用户密码是普通人认为的加密,所有者密码是安全权限的加密。
编辑:对不起,我的答案是错误的,虽然它是有帮助的。您可以使用用户密码(您可能获得受限权限)或所有者密码(您将获得完全权限)打开PDF。可能发生的情况是存在一个与40bit密钥匹配所有者密码的bug(这是默认值)。目前正在调查此错误,请参阅PDFBOX-2456并搜索“MD5”。
我需要解密用AES加密的传入请求,我尝试使用共享示例但无法找到正确的参数集 加密:AES/CBC/PKCS5添加AES/CBC/PKCS5 初始化向量:长度为16的空字节数组 测试密钥:1234567890123456 纯文本:abcdefghigklmnopqrstuvwxyz0123456789 加密:8Z3dZzqn05FmiuBLowExK0CAbs4TY2GorC2dDPVlsn/tP
6)当我尝试解密消息时,我得到两个“gpg:[不知道]:无效数据包”消息,解密失败:
问题内容: 我正在使用以下代码加密和解密数据。现在,我想从Node JS加密数据,并想从Go lang解密数据。但是我无法使用GO语言实现它。 从头开始,我试图像下面这样解码,但我无法实现。 有人可以帮我解决这个问题吗? 问题答案: 您应该使用而不只是字符串到字节。 操场上的解决方案:https : //play.golang.org/p/qi_6S1J_dZU 与您的js结果相比 测试结果是相同
我面临AES填充问题。我使用的是Alcides Soares FIlho(用C#生成128位字符串)中建议的代码。请注意,我的加密侧码是。。。 另外,我传递给明文的值是“Z4YAZZSQ 001F295E2589AWAN HANS”。加密正在进行。但解密失败了。 解密侧码 我应该能拿回“Z4YAZZSQ 001F295E2589AWAN HANS” 但出现以下错误“填充无效,无法删除”请建议解决方
我正在使用JavaScript和Node.js处理一个消息传递项目。创建用户时,服务器使用node.js库生成RSA键区。私钥使用用户密码加密。在webapp上,当用户A向用户B发送消息时,使用用户B的公钥对数据进行加密。当用户B接收到消息时,使用他们的私钥和密码对消息进行解密。 我的问题是,虽然应用程序似乎可以加密数据,但我无法解密数据。抛出的错误消息实际上是“无法解密数据”,这是没有帮助的。
节点模块: Java类:主要方法现在只是用于测试,稍后将被删除。