我有一个PDF文件锁定了所有者和用户密码。我没有所有者密码,但我有用户密码。
我正在使用iText解密文件
public class Decrypt {
public static final String SRC = "D:\\GitCodeBase(Master)\\pdf\\src\\main\\resources\\encrypt\\abc.pdf";
public static final String DEST = "D:\\GitCodeBase(Master)\\pdf\\src\\main\\resources\\decrypt\\def.pdf";
public static void main(String[] args) throws Exception {
PdfReader.unethicalreading = true;
PdfReader reader = new PdfReader(SRC,"abc123".getBytes());
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(DEST));
stamper.close();
reader.close();
}
}
不幸的是,您必须更改的pdfreader
的成员变量不是public
。因此,您不能简单地设置它。
有问题的成员是受保护的
。因此,您可以通过派生您自己的PDFReader
子类来更改它,并在其中使用一个方法来进行更改。这一点在Bruno的回答中已经得到了证明,这里是针对非空用户密码的变体:
class MyReader extends PdfReader {
public MyReader(final String filename, final byte password[]) throws IOException {
super(filename, password);
}
public void decryptOnPurpose() {
encrypted = false;
}
}
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
MyReader.unethicalreading = true;
MyReader reader = new MyReader(src, "abc123".getBytes());
reader.decryptOnPurpose();
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();
}
或者,您也可以使用反射:
PdfReader.unethicalreading = true;
PdfReader reader = new PdfReader(inputStream, "abc123".getBytes());
Field encryptedField = PdfReader.class.getDeclaredField("encrypted");
encryptedField.setAccessible(true);
encryptedField.set(reader, false);
PdfStamper stamper = new PdfStamper(reader, outputStream);
stamper.close();
reader.close();
附注:我知道这个答案对布鲁诺原来的答案几乎没有什么补充。我并没有试图把这个问题标记为那个答案的问题的重复,只是因为这个问题已经“离题”,而且那个答案中的许多链接也已经过时了。
我需要使用以下命令在JAVA中解密在UNIX中加密的文件: 我必须用java解密,就像在UNIX中一样 有人能给我一个java代码来做这个吗?
问题内容: 我需要使用以下命令在JAVA中解密在UNIX中加密的文件: 我必须像在UNIX中一样在Java中解密 有人可以给我一个Java代码来执行此操作吗? 问题答案: OpenSSL通常使用自己的基于密码的密钥派生方法,该方法在中指定EVP_BytesToKey,请参见下面的代码。此外,它会在多行中隐式地将密文编码为base 64,以便在邮件正文中发送密文。 因此,结果是伪代码: 因此解密为:
本文向大家介绍如何在Linux上使用gpg命令加密和解密文件,包括了如何在Linux上使用gpg命令加密和解密文件的使用技巧和注意事项,需要的朋友参考一下 有很多选择可以保护您的数据。但是,GPG的另一个优势是可以优先加密您的数据并通过Internet安全地传输它们。本文介绍有关–如何在Linux上使用GPG命令加密和解密文件。 要获取有关GPG的更多信息,请使用以下命令– 样本输出应如下所示–
我在网上的某个地方发现这样一句话:“解释器是一个程序,它使用编程语言的基本指令集作为其机器语言来实现或模拟虚拟机。”在上述引用的上下文中,有人能解释一下解释器是如何实际完成高级指令的执行的吗?网上的教程只涉及抽象的方式,即一次只需要一行代码就可以执行。它是使用机器指令库还是如何使用?我很想知道这件事。
我正在尝试从RESTAPI获取数据,他们还没有完全实现OAuth。他们只使用OAuth在您已经拥有访问令牌后使用的签名方法。我已获得消费者密钥 你能建议怎么做吗?
当我加密一个提供用户和所有者密码的PDF文档时,我可以使用这两个密码中的任何一个打开文档。 文件是否在内部复制,并且每一份都用密码加密?从加密文档文件的大小看,文件中有两个加密文档并不明显。 PD:我知道PDF中用户和所有者密码之间的“用户体验”差异。