我正在创建一个简单的密码保管库/生成器,现在我正在处理代码的保管库部分,并且正在编写用于加密密码的代码。我正在使用 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 ,我需要将我的代码放入一个 try/catch 块中来捕获 NoSuchAlgorithmException 。我不知道为什么,但它解决了我的问题。

最佳答案

根据 Oracle 关于 MessageDigest 类的文档:

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

关于java - MessageDigest.getInstance(algorithm) 总是抛出 NoSuchAlgorithmException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36973078/

10-10 15:13