我正在创建一个简单的密码保险库/生成器,现在我正在处理我的代码的保险库部分,并且正在编写用于加密密码的代码。我正在使用 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 block 中以捕获 NoSuchAlgorithmException
。我不知道为什么,但它解决了我的问题。
最佳答案
根据 Oracle 关于 MessageDigest 类的文档:
Every implementation of the Java platform is required to support the following standard MessageDigest algorithms:
MD5, SHA-1, SHA-256
Oracle 的 JVM 支持 MD2、MD5、SHA-1、SHA-256、SHA-384 和 SHA-512
关于java - MessageDigest.getInstance(algorithm) 总是抛出 NoSuchAlgorithmException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973078/