我正在尝试使用Sha-256来散列网址,但我遇到了一些问题。我已经将字节转换为字符串,当我记录该字符串时,它显示错误而不是32字符长的rand字符,它显示:
04-18 11:46:00.427:V / myApp(797): C rE .mm“7 { ” Q] m
非常感谢任何帮助
继承我的代码:
public void hash() throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(fixturesFeedURL.getBytes("UTF-8"));
byte[] digest = md.digest();
String strhash = new String(digest);
Log.v("myApp", strhash);
}
答案 0 :(得分:0)
以下是我为MD5做的事情:
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest(input.getBytes());
StringBuffer output = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String tmpStr = "0" + Integer.toHexString((0xff & b[i]));
output.append(tmpStr.substring(tmpStr.length() - 2));
}
return output.toString();
可能只需更改MessageDigest算法......
答案 1 :(得分:0)
您的问题是将字节数组转换为String - 您可以使用它来执行此操作:
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html#encodeHex(字节[])