问答详情
源自:5-2 开发模式接入

用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;

}

}


提问者:慕姐1408575 2015-06-09 19:05

个回答

  • lucien_es
    2015-07-28 15:39:38

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

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

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

  • 笑颜如花
    2015-07-03 09:38:55

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

  • 好帮手慕珊
    2015-06-10 14:04:41

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