C# Web サービスを使用していますが、パラメーターの 1 つが md5 ハッシュを送信しています。Java は符号付き (バイト配列に負の数を含む) で MD5 ハッシュを作成し、C# は符号なし (バイト配列に負の数を含まない) を生成します。
私は Stack Overflow で複数の同様の質問をしましたが、満足のいくものは見つかりませんでした。
必要なのは、c# が生成するものと同様の符号なしバイト配列だけです。BigInteger を使用してみましたが、その後さらに処理を行う必要があるため、符号なしバイト配列で使用する必要があります。BigInteger は 1 つの整数を提供し、tobytearray() を使用するとまだ負の数になります。
2 補数を行う必要がある場合、どうすればそれを行うことができますか。次に、バイト配列をループして、負の数を正の数に変換できます。
MD5 ハッシュを生成するために、次の Java コードを使用しています。
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();