Синтаксис неверен с моим кодом SHA1 - PullRequest
0 голосов
/ 01 марта 2011

Я получил следующий код:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class Sha1{

    private static final char[] HEX_CHARS = null;

    public static void main(String[] args){
        String hash = toSHA1(("27"+"peojvootv").getBytes());
        System.out.println(hash);
    }
    public static String toSHA1(byte[] convertme) {
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
        }
        catch(NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        byte[] buf = md.digest(convertme);
        char[] chars = new char[2 * buf.length];
        for (int i = 0; i < buf.length; ++i) {
            chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
            chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
        }
        return new String(chars);
    }
}

Почему-то выдает ошибку.Я не знаю, как это исправить.это стек вызовов

Exception in thread "main" java.lang.NullPointerException
    at mainClockies.Sha1.toSHA1(Sha1.java:26)//The return statement of second method
    at mainClockies.Sha1.main(Sha1.java:12)//The callback of the second method

Ответы [ 3 ]

4 голосов
/ 01 марта 2011

Что ж, произойдет , если MessageDigest.getInstance() throw NoSuchAlgorithmException - потому что вы распечатываете исключение, но затем продолжаете независимо.

Однако на самом деле это происходит из-за этого:

private static final char[] HEX_CHARS = null;

, а затем это:

chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];

Я подозреваю, что вы на самом деле не запускаете код, который у вас есть - по крайней мере, на моей машине NPE правильно указывает на строку 24, строку, включающую HEX_CHARS.

Исправить:

private static final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
2 голосов
/ 01 марта 2011

Ваша переменная HEX_CHARS никогда не устанавливается ни на что, кроме null.

0 голосов
/ 01 марта 2011

Попробуйте добавить в HEX_CHARS что-то отличное от нуля.

...