关于 JAVA中PBKDF2WithHmacSHA256加密。

public class SHA256 {

public static byte[] getEncryptedPassword(String password, byte[] salt,  int iterations,  int derivedKeyLength) throws NoSuchAlgorithmException, InvalidKeySpecException {
    KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterations, derivedKeyLength * 8);

    SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");

    return f.generateSecret(spec).getEncoded();
}

public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeySpecException {
    byte [] slat={'9','T','u','x','w','O','z','X','c','m','e','y'};

    byte[]pwd=getEncryptedPassword("123456",slat, 12000, 256);


}

}

上面是源码,不知道为什么 我一运行 就报错。

Exception in thread "main" java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA256 SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.(DashoA13*..)
at javax.crypto.SecretKeyFactory.getInstance(DashoA13*..)
at TestLZQ.SHA256.getEncryptedPassword(SHA256.java:26)
at TestLZQ.SHA256.main(SHA256.java:34)

2个回答

参考一下这个试试
报错: java.security.NoSuchAlgorithmException
http://blog.csdn.net/chexitianxia/article/details/9718045

遇到此错误是因为SASL验证,取消掉此验证就可以了。给出了如下代码
[html] view plaincopy
configuration.setReconnectionAllowed(true);

configuration.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

configuration.setSendPresence(true);

configuration.setSASLAuthenticationEnabled(false);

configuration.setRosterLoadedAtLogin(false);

经测试发现只需添加如入两句就可以了
[html] view plaincopy
config.setSASLAuthenticationEnabled(false);

config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

lzp_lrp
WorldMobile 回复baidu_28888097: 那就用1.8的jdk吧
4 年多之前 回复
baidu_28888097
baidu_28888097 谢谢! 不过我的做法是,换了JDK,从1.7换到1.8就没报错了。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐