我试图散列使用MD5字符串。我需要哈希值作为Java中的128位无符号整数。如何将字节数组转换为Java中的无符号128位整数?
MessageDigest md = MessageDigest.getInstance("MD5");
String toHash = "HashThis";
md.update(toHash.getBytes());
byte[] isHashed = md.digest();
如何将isHashed转换为整数?
我试图散列使用MD5字符串。我需要哈希值作为Java中的128位无符号整数。如何将字节数组转换为Java中的无符号128位整数?
MessageDigest md = MessageDigest.getInstance("MD5");
String toHash = "HashThis";
md.update(toHash.getBytes());
byte[] isHashed = md.digest();
如何将isHashed转换为整数?
使用BigInteger
。
BigInteger value = new BigInteger(isHashed);
为了确保所得到的值是正的(如字节数组预计将在2的补码),确保最显著位为零。这可以通过使数组1元素变大来容易地实现,其中第一个字节为0.
Java没有128位int类型。但它有一个BigInteger类,它有一个构造函数,它需要一个符号和一个表示为byte []的量值。
BigInteger value=new BigInteger(1,isHashed);
那么,它假定字节数组是二进制补码,所以你可以只添加一个零字节作为数组中的第一个来保证它。 – Kayaman 2015-03-25 11:27:32
将该评论的文本添加到答案中会更好,否则它可能会在VLQ评论队列中关闭.... – 2015-03-25 12:37:58