我正在用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");
Run Code Online (Sandbox Code Playgroud)
我共享盐,用户在每端输入密码,加密和解密工作正常:-)我的问题是,我希望能够验证用户输入的密码是否正确才能开始(可能很长)解密过程.我知道PBKD规范包含一个可选的2字节验证值,但我不知道如何使用上述方法生成此值.Java是否为此提供支持,或者不支持哪种安全替代方案?
谢谢你的时间.