为了账号安全,请及时绑定邮箱和手机立即绑定

用SHA1加密后一直返回null

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;

}

}


正在回答

3 回答

char hexDigits[] = {'1','2','3','4','5','6','7','8','9','a','b','c',

'd','e','f'};

中掉了一个0  所以会发生数组下标越界,所以直接return null;

1 回复 有任何疑惑可以回复我~

MessageDigest mdTemp = MessageDigest.getInstance("SHA-1");我看到老师写的是"SHA1"

0 回复 有任何疑惑可以回复我~

在return new String(buf);之前用输出语句输出new String(buf)的内容,看看是什么

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用SHA1加密后一直返回null

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信