我的SHA1代码语法错误
我得到以下代码:
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 >> 4]; chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F]; } return new String(chars); } }
不知何故,它发出错误。 我不知道如何解决它。 这是callstack
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
好吧,如果MessageDigest.getInstance()
抛出NoSuchAlgorithmException
就会发生 – 因为你打印出exception然后继续执行。
然而,它实际上是因为这个:
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();
您的HEX_CHARS
变量永远不会设置为除null
之外的任何内容。
尝试在HEX_CHARS中添加除null之外的其他内容。