私は鍵を持っています:
byte: 0011100101010111000101111100101101100010100010111001010010000000
メッセージ:
byte: 10110001
16 進数での hmac 出力:
HMAC-SHA256: ca3871e40207fc0cd66558e4e4fa2817d283da605c15e4c941ff7945ad4be29f
したがって、次のような新しい BigInteger (テスト) を作成すると:
BigInteger test = new BigInteger(hmac);
そして、次のように 16 進値を取得したい場合:
System.out.println("\noutput: " + test.toString(16));
私はこれを得る:
output: -35c78e1bfdf803f3299aa71b1b05d7e82d7c259fa3ea1b36be0086ba52b41d61
問題はどこだ?または、メッセージから hmac-sha256 を計算し、最初から BigIntegers を使用するにはどうすればよいですか。
key、message、および hmac はバイト配列です。
バイト「11010100」を BigInteger に変換しようとすると、負の「-101100」に変換されます なぜ BigInteger はそれを負に変換するのですか? 最初のビットは符号ビットですが、符号ビットを無効にするにはどうすればよいですか?