首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中使用PBKDF2实现口令验证

在Java中使用PBKDF2实现口令验证
EN

Stack Overflow用户
提问于 2010-03-04 06:35:45
回答 3查看 21.1K关注 0票数 20

我正在使用Java语言进行基于密码的文件加密;我使用AES作为底层加密算法,并使用以下代码(我从本站点上另一个慷慨的帖子中获得)使用PBKDF2WithHmacSHA1从盐和密码组合中获得密钥。

代码语言:javascript
复制
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对此提供支持吗?如果不支持,那么什么是安全的替代方案?

耽误您时间,实在对不起。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-07 02:19:21

感谢疯狂的scot和Chris的帮助。在深入研究之后,我决定使用Dr Gladmans file encryption page中描述的方法来进行密码验证和消息身份验证。我相信这种基于PBKDF2和MAC的方法使得为密码m导出验证值的成本足够高,从而使其变得安全。再次感谢,我希望这个解决方案能对其他人有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2010-03-04 06:56:38

根据定义,没有安全的“快速检查”机制。使用PBKDF2或相关技术的全部目的是使密码检查变慢,从而挫败密码破解程序。如果你添加了一个快速检查系统,密码破解者将能够非常迅速地批量猜测密码。

票数 6
EN

Stack Overflow用户

发布于 2010-03-04 06:57:15

计算某种类型的密码验证标签,并将其与加密的文件数据一起存储,以便您可以首先进行检查。这可能类似于固定(短)字符串的PBMAC。当然,这需要是一个不可逆的函数,这样黑客就不能确定密码,也不能太快地计算以混淆暴力破解攻击。

您是否考虑过是否(以及如何)检测整个文件是否已正确解密?您可能应该研究一下PBES2和PBMAC的组合,而不是直接使用AES。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2375541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档