我正在使用一种散列字符串的小方法。寻找信息,我可以找到 MessageDigest 可以帮助我完成这项任务,here
但现在我有一个问题。似乎在 Java 中散列字符串的过程总是相同的:
- 您创建 MessageDigester 并指定要使用的算法。
- 您使用要散列的字符串更新 MessageDigester
- 然后你调用 MessageDigester.digest 得到一个 byte[]。
如果哈希最常用的功能之一是获取此哈希的字符串版本,为什么(在我提到的问题和其他一些问题中)人们必须实现他们的 convToHex 方法?
private static String convToHex(byte[] data) {
StringBuilder buf = new StringBuilder();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
是否有 Java 方法允许我在 MessageDigester 返回的 byte[] 和 String 之间进行解析?如果存在,它在哪里??如果没有,为什么我必须制作自己的方法?
谢谢。