繁体   English   中英

PBKDF2WithHmacSHA512 抛出 NoSuchAlgorithmException

[英]PBKDF2WithHmacSHA512 throwing NoSuchAlgorithmException

我正在 Eclipse 中为 android 编写一个应用程序。 我首先尝试使用 PBKDF2WithHmacSHA1 来散列我的密码,效果很好。 但是由于SHA1的弱点,我决定将其升级为PBKDF2WithHmacSHA512。 但是,eclipse 现在抛出 NoSuchAlgorithmException。

SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512") 抛出 NoSuchAlgorithmException

我按照上面链接中的说明进行操作。 但是,上面问题中链接的 java 文件需要 sun.crypto 库,而我在 Eclipse 上没有。 还建议我不要使用 Sun 库,而是使用 java 官方库。

我的问题是,是否有在 Eclipse 上使用 PBKDF2WithHmacSHA512 的方法? 或者,如果可能的话,有人可以教我如何将其分解为先执行 PBKDF2 的部分,然后再执行 HmacSHA512 的结果吗?

谢谢你。

在 android 中使用 SecretKeyFactory 时要小心,请检查支持的 API 版本,如果使用错误的版本会出现异常,如下所示: https : //developer.android.com/reference/javax/crypto/SecretKeyFactory

在此处输入图片说明

当请求特定的加密算法但在环境中不可用时会引发此异常。 所以基于上面的需求👆,如果你也想在低安卓版本上使用这个算法,我会推荐你​​使用Bouncy Castle Library。

// Gradle

implementation 'org.bouncycastle:bcpkix-jdk15to18:1.70'
implementation 'org.bouncycastle:bcprov-jdk15to18:1.70'


// Use "PBKDF2WithHmacSHA512" with android O version and above

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  val skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512")
  val pwSpec = PBEKeySpec(secret.toCharArray(), salt, iterations, keyLength)
  skf.generateSecret(pwSpec).encoded
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM