所以我正在处理一个项目,我需要在存储之前对用户密码进行哈希处理(对于登录提示)。实际上散列文本工作的代码很好,但我试图将它用于另一个类。问题是我收到以下错误,但我不知道这意味着什么。
1 error found:
File: /Users/justin/Desktop/Culminating Java/login.java [line: 10]
Error: /Users/justin/Desktop/Culminating Java/login.java:10: unreported exception java.security.NoSuchAlgorithmException; must be caught or declared to be thrown
以下是散列的代码
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class HashTextTest {
/**
* @param args
* @throws NoSuchAlgorithmException
*/
public static void hasher() throws NoSuchAlgorithmException {
System.out.println(sha1(login.InputPassword));
System.out.println(sha1("password"));
}
static String sha1(String input) throws NoSuchAlgorithmException {
MessageDigest mDigest = MessageDigest.getInstance("SHA1");
byte[] result = mDigest.digest(input.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < result.length; i++) {
sb.append(Integer.toString((result[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}
以下是我尝试使用它的方式。
import javax.swing.*;
import java.io.*;
public class login{
public static String InputPassword = "";
public static void main (String args[]){
HashTextTest myhasher = new HashTextTest();
myhasher.hasher();
}
}
答案 0 :(得分:0)
如果仔细阅读输出,请说:
错误:/ Users / justin / Desktop / Culminating Java / login.java:10:notported exception java.security.NoSuchAlgorithmException; 必须被抓住或宣布被抛出
这意味着它在编译时是一个经过检查的异常,您必须在login.java
中处理它。包装试试,抓住myhasher.hasher();
的电话并抓住NoSuchAlgorithmException
public static void main (String args[]){
HashTextTest myhasher = new HashTextTest();
try {
myhasher.hasher();
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
或向主方法添加throws NoSuchAlgorithmException
,如下所示: -
public static void main (String args[]) throws NoSuchAlgorithmException