慕姐1408575
2015-06-09 19:05
public static String getSha1(String str){
if(str == null || str.length() == 0){
return null;
}
System.out.println(str);
char hexDigits[] = {'1','2','3','4','5','6','7','8','9','a','b','c',
'd','e','f'};
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA-1");
mdTemp.update(str.getBytes("UTF-8"));
byte[] md = mdTemp.digest();
int j = md.length;
char buf[] = new char[j * 2];
int k = 0;
for(int i = 0;i<j;i++){
byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
}catch (Exception e) {
return null;
}
}
char hexDigits[] = {'1','2','3','4','5','6','7','8','9','a','b','c',
'd','e','f'};
中掉了一个0 所以会发生数组下标越界,所以直接return null;
MessageDigest mdTemp = MessageDigest.getInstance("SHA-1");我看到老师写的是"SHA1"
在return new String(buf);之前用输出语句输出new String(buf)的内容,看看是什么
初识Java微信公众号开发
158330 学习 · 469 问题
相似问题