我正在使用 C# Web 服务,其中一个参数是发送 md5 哈希。Java 创建带符号的 MD5 哈希(在字节数组中包含负数),而 C# 生成无符号(在字节数组中不包含负数)。
我在 Stack Overflow 中经历了多个类似的问题,但没有找到任何令我满意的问题。
我所需要的只是类似于 c# 生成的无符号字节数组。我曾尝试使用 BigInteger,但我需要在无符号字节数组中使用它,因为在那之后我需要做进一步的处理。BigInteger 给了我一个整数,使用 tobytearray() 仍然有负数。
如果我必须做 2 个补码,那我该怎么做。然后我可以遍历字节数组并将负数转换为正数。
我正在使用以下 Java 代码生成 MD5 哈希:
String text = "abc";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5hash = new byte[32];
try {
md.update(text.getBytes("utf-8"), 0, text.length());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
md5hash = md.digest();