我正在创建一个简单的密码保管库/生成器,现在我正在处理代码的保管库部分,并且正在编写用于加密密码的代码。我正在使用 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/