Java中的Sha散列

时间:2015-04-19 21:53:25

标签: java hash sha1

所以我正在处理一个项目,我需要在存储之前对用户密码进行哈希处理(对于登录提示)。实际上散列文本工作的代码很好,但我试图将它用于另一个类。问题是我收到以下错误,但我不知道这意味着什么。

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();


} 
}

1 个答案:

答案 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