【发布时间】:2011-01-23 10:47:47
【问题描述】:
我正在用 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 是否为此提供支持,或者如果不提供支持,那将是一个安全的替代方案吗?
感谢您的宝贵时间。
【问题讨论】:
标签: java cryptography passwords aes