Tag: 密码

如何阅读使用未知的随机所有者密码创建的PDF?

要求是一次处理一批PDF,并且成功使用用户密码对每个PDF进行加密。 但是,这些PDF以前是使用随机生成的动态所有者密码(不知道任何一个)加密的,以防止任何编辑。 我使用iText进行加密,如下所示: byte[] userPass = “user”.getBytes(); byte[] ownerPass = “owner”.getBytes(); PdfReader reader = new PdfReader(“Misc.pdf”); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(“Processed_Encrypted.pdf”)); stamper.setEncryption(userPass, ownerPass, PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); stamper.close(); reader.close(); 但是这段代码抛出了一个com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner password 有人可以指导如何解决此错误/绕过所有者密码? 在这里,我想明确表示我们合法拥有这些PDF,因此不会犯下任何犯罪/黑客行为。 PS :解决方案不仅限于iText,也可以使用任何其他Java库( 免费或许可 )。

使用java执行带有“sudo”的linux shell命令,而不输入所需的密码

嗨,我正在使用ganymed-ssh2 java库在linux工作站中成功执行远程命令。 但现在有一种情况我需要执行一个命令,但这要求我输入一些密码……如: sudo /usr/bin/some_process please enter your password: 我曾经以这种方式实现远程cmd执行: Session sess = conn.openSession(); sess.execCommand(“uname -a && date && uptime && who”); System.out.println(“Here is some information about the remote host:”); InputStream stdout = new StreamGobbler(sess.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); while (true) { String line = br.readLine(); if (line == null) break; System.out.println(line); } […]

在Java中,如何在不生成String对象的情况下从HttpServletRequest标头中提取密码?

处理敏感数据(==密码)的常见Java安全准则建议不要使用String对象来存储数据,而是使用字节或字符数组。 我试图在HttpServlet处理程序中应用此指南。 特别是,我使用类似于基本身份validation的方法,其中凭据在标头中传入(这是一个GET请求,因此没有正文)。 我遇到的问题是,在没有生成String对象的情况下,似乎无法获取头数据,这违反了get-go的准则。 我已经彻底搜索了一个解决方案,但没有找到任何相关的讨论。 有没有人对此问题有任何见解? 注意:这是通过HTTPS进行的,因此这里没有连接安全问题。

Java – 如何存储应用程序中使用的密码?

我正在开发一个从数据库读取一些数据的应用程序。 与db的连接通过标准登录/密码机制执行。 问题是:如何存储db密码? 如果我将它存储为类成员,则可以通过反编译操作轻松检索它。 我认为混淆不能解决问题,因为在混淆的代码中也可以很容易地找到字符串密码。 有人有建议吗?

getText()vs getPassword()

我目前正在为一家虚拟公司设计一个登录系统,现在我所拥有的只是主要登录,需要大量的清理工作。 下面是我的登录处理程序。 private class LoginButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if(_uid.getText().equalsIgnoreCase(“Nathan”) && _pwd.getText().equals(“password”)) { JOptionPane.showMessageDialog(null, “Congratulations on logging in!”); } else { JOptionPane.showMessageDialog(null, “Error on login!”); } } } 原样,这完全没问题,但是当我改成它时 _pwd.getPassword.equals(“password”) 当一切输入正确时,它会直接指向else语句。 这有什么不对? 完整的程序如下。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame { private static final int HEIGHT = […]

使用Java中的PBKDF2进行密码validation

我正在用Java做基于密码的文件加密; 我使用AES作为底层加密算法,而PBKDF2WithHmacSHA1使用以下代码从盐和密码组合中导出密钥(我从本网站的另一张慷慨的海报中获得)。 SecretKeyFactory f = SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA1″); KeySpec ks = new PBEKeySpec(password,salt,1024,128); SecretKey s = f.generateSecret(ks); Key k = new SecretKeySpec(s.getEncoded(),”AES”); 我共享盐,用户在每端输入密码,加密和解密工作正常:-)我的问题是,我希望能够validation用户输入的密码是否正确才能开始(可能很长)解密过程。 我知道PBKD规范包含一个可选的2字节validation值,但我不确定如何使用上述方法生成此值。 Java是否为此提供支持,或者不支持哪种安全替代方案? 谢谢你的时间。