簡體   English   中英

MessageDigest.getInstance(算法)總是拋出NoSuchAlgorithmException

[英]MessageDigest.getInstance(algorithm) always throwing NoSuchAlgorithmException

我正在創建一個簡單的密碼保險庫/生成器,現在我正在處理我的代碼的保險庫部分,並且正在編寫用於加密密碼的代碼。 我正在使用MessageDigest。

但是,當我嘗試選擇算法時,它總是拋出NoSuchAlgorithmException。 我正在嘗試使用SHA-1或SHA-256。 我到處尋找,我找不到解決方案。 編輯:我忘了提到我試過“SHA-1”,“SHA-256”和“MD5”。 沒有工作。

我的方法:

private static String generateHash(String input) throws NoSuchAlgorithmException {
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    messageDigest.update(input.getBytes());
    String encryptedString = new String(messageDigest.digest());
    System.out.println("encryptedString :: " + encryptedString);
    return encryptedString;
}

(我只打印出encryptedString用於調試目的)

我正在使用JDK 1.8.0_91和IntelliJ IDEA 1.5.0.2。

編輯:所以我弄清楚出了什么問題。 而不是使用throws NoSuchAlgorithmException ,我需要將我的代碼放入一個捕獲NoSuchAlgorithmException的try / catch塊。 我不知道為什么,但它解決了我的問題。

根據Oracle關於MessageDigest類的文檔:

需要Java平台的每個實現來支持以下標准MessageDigest算法:

MD5,SHA-1,SHA-256

Oracle的JVM支持MD2,MD5,SHA-1,SHA-256,SHA-384和SHA-512

您在原始未經編輯的問題中提到的SHA-128不受支持。 支持的消息摘要算法在標准名稱文檔中給出。

NB消息摘要不會產生“加密字符串”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM