如何在Java中将字节数组转换为BigInteger

8

我正在处理Java相关的工作... 我想知道如何将字节数组转换为BigInteger。实际上,我使用了MD5的摘要方法,它返回了一个字节数组,我想将其转换为BigInteger。


@Stephen C :) :) ,我的意思是特别指出哪种方式,它可以是简单的字节数组byte[],也可以是字符串内容的字节表示。 - jmj
2个回答

8

这个例子用几行Java代码获取MD5哈希值与另一个相关的例子有关。

我相信你应该能够做到。

MessageDigest m=MessageDigest.getInstance("MD5");
m.update(message.getBytes(), 0, message.length());
BigInteger bi = new BigInteger(1,m.digest());

如果您想以"d41d8cd98f00b204e9800998ecf8427e"的样式打印它,您应该能够做到。

System.out.println(bi.toString(16));

5
实际上我使用了MD5的摘要方法,返回了一个字节数组,我想将其转换为BigInteger
您可以使用new BigInteger(byte[])
但需要注意的是,MD5哈希在任何有用意义上都不是整数,它实际上只是一个二进制位模式。
我猜您这样做只是为了打印或对MD5哈希进行排序。但是有更节省内存的方法来完成这两个任务。

最好使用整数、byte[]构造函数。这个将把它解释为二进制补码表示。 - Janus Troelsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接