我有一把钥匙:
byte: 0011100101010111000101111100101101100010100010111001010010000000
一个消息:
byte: 10110001
hmac 十六进制输出:
HMAC-SHA256: ca3871e40207fc0cd66558e4e4fa2817d283da605c15e4c941ff7945ad4be29f
因此,如果我创建一个新的 BigInteger (测试),例如:
BigInteger test = new BigInteger(hmac);
如果我想找回十六进制值,例如:
System.out.println("\noutput: " + test.toString(16));
我明白了:
output: -35c78e1bfdf803f3299aa71b1b05d7e82d7c259fa3ea1b36be0086ba52b41d61
哪里有问题?或者我如何从消息中计算 hmac-sha256 并从一开始就使用 BigIntegers。
key、message 和 hmac 是字节数组。
如果我尝试将字节“11010100”转换为 BigInteger,它会转换为负数“-101100” 为什么 BigInteger 会将其转换为负数?第一位是符号位,如何禁用符号位?