2015-04-19 1 views
-1

Так что я работаю над проектом, где мне нужно хэш-пароль пользователей, прежде чем я его сохраню (для приглашения для входа). Код, который на самом деле хэширует textworks отлично, но я пытаюсь использовать его в форме другого класса. Проблема в том, что я получаю следующую ошибку, и я не знаю, что это значит.Sha хэширование в Java

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

в основной, 'myhasher.hasher () 'может генерировать исключение« NoSuchAlgorithmException », поэтому вы должны либо его поймать, либо использовать предложение throws в объявлении метода. –

ответ

0

Если вы читаете вывод тщательно он говорит:

Ошибка:/Users/джастин/Desktop/кульминация Java/login.java: 10: незарегистрированное 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

+0

Спасибо, человек прекрасно работал. –