我試圖散列使用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