Java 使用密码短语、saltValue、密码迭代、initVector、keySize的sha1加密
我正在开发java应用程序,我被要求使用以下信息生成安全代码Java 使用密码短语、saltValue、密码迭代、initVector、keySize的sha1加密,java,security,encryption,cryptography,sha1,Java,Security,Encryption,Cryptography,Sha1,我正在开发java应用程序,我被要求使用以下信息生成安全代码 Value to be encrypted ="test1234"; passPhrase = "testValue" saltValue = "testValue" hashAlgorithm = "SHA1" passwordIterations = 2 initVector = "testValue" keySize = 256 有人能告诉我,基于上述值使用SHA1算法生成哈希值的方法是什么。这个问题有点模糊,但我认为您可
Value to be encrypted ="test1234";
passPhrase = "testValue"
saltValue = "testValue"
hashAlgorithm = "SHA1"
passwordIterations = 2
initVector = "testValue"
keySize = 256
有人能告诉我,基于上述值使用SHA1算法生成哈希值的方法是什么。这个问题有点模糊,但我认为您可能希望使用PBKDF2生成哈希值。幸运的是,它在JavaSE6中非常简单+
KeySpec spec = new PBEKeySpec(passsword.toCharArray(), salt,
iterations, derivedKeyLength);
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
return f.generateSecret(spec).getEncoded();
在中有更深入的解释,请更明确地说明您正在尝试做什么。我们无法仅根据流程的输入猜测所需内容。请在此网站上查找PBKDF2。请注意,
initVector
无效(无编码,长度错误,非随机-如果与CBC模式加密一起使用),您需要定义如何对纯文本进行编码(“待加密”),passPhrase
和saltValue
转换成字节。+1虽然将字符串而不是字符数组输入到密码中有点不符合目的,而且不需要对已经是SecretKey
的东西调用getEncoded()
。是的,我想这取决于你想用SecretKey做什么。