当前位置: 首页 > 面试题库 >

用Java中的PBKDF2进行密码验证

沈凯康
2023-03-14
问题内容

我正在用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");

我吃了盐,用户在两端输入密码,加密和解密工作正常:-)我的问题是,我希望能够在进入(可能很长)之前验证用户输入的密码是否正确解密过程。我知道PBKD规范包含一个可选的2字节验证值,但是我不确定如何使用上述方法生成该值。Java是否为此提供支持?

谢谢你的时间。


问题答案:

嘿,感谢疯狂的苏格兰人和克里斯(Chris)的帮助。经过一些挖掘之后,我决定使用Gladmans博士文件加密页面上描述的方法进行密码验证和消息身份验证。我相信这种基于PBKDF2和MAC的方法使得派生密码的验证值足够昂贵以使其安全。再次感谢,我希望此解决方案对其他人有帮助。



 类似资料:
  • 我正在使用以下代码创建哈希密码和salt: 我正在数据库中存储HashedPassword和Salt。 现在我要验证用户登录时的密码: 这不起作用,我得到了一个完全不同的哈希密码,而不是存储在数据库中的密码。据我所知,您应该在用户登录时输入的密码之前预置salt,然后运行相同的哈希密码函数。上面不是等价于那个吗?

  • 大家好! 我正试图找到一种方法,以盐和散列我的密码在Java为一个web应用程序,需要一个密码登录。 我试图使用Bouncy Castle bcrypt和scrypt类来获得salting、哈希和密码验证的方法,结果发现这两个类中都没有密码验证方法。如果我在这个评估中是不正确的,请让我知道密码验证的方法是什么或者如果我遗漏了什么。 作为另一种选择,我决定在分解并转到PDBKF2之前试用bcrypt

  • 尽管我有点困惑,我是否应该将salt输入到我的PBKDF2函数中,并将salt存储在一列中,而将PBKDF2的密码存储在另一列中。 我也在使用CodeIgniter,并找到了一个用于PBKDF2的库(https://github.com/hashemqolami/codeigniter-pbkdf2-library),它声称我不需要单独存储salt。 使用作为推荐的用户密码注册用户;无需单独存储用

  • 我有一个用户登录Html表单,我在其中获取用户的电子邮件和密码并根据数据库检查它们。到目前为止,我有以下代码,但当我提交表单时,它不会转到指定的JSP页面。我可以做些什么来改进我的代码,以及当用户按下提交但仍留在同一页面上时,我如何生成错误消息? 提前谢谢你。 //SERVLET doPost方法 //前向法 //HTML表单

  • 在我当前的项目中,我使用电子邮件ID注册用户,然后在个人资料部分,当用户更新电话号码时,我验证该电话号码 现在真正的痛苦是,我的用户可以使用电话号码或电子邮件ID登录,但对于电子邮件ID,用户必须输入密码 我希望用户使用电子邮件或带有密码的电话登录。就像Flipkart那样。 我有什么办法可以做到吗?

  • 问题内容: 有没有一种方法可以解密Java中的密码。Java将算法实现为。我得到了创建密码哈希的代码。我在下面提到了哈希技术的链接: http://howtodoinjava.com/security/how-to-generate-secure-password-hash- md5-sha-pbkdf2-bcrypt-examples/ 我的要求是以加密格式存储第三方FTP服务器密码,并在需要登