![](/img/trans.png)
[英]SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA512”) throws 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.