簡體   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