Java大数字否定?

时间:2016-12-09 14:06:34

标签: java

我试图从字符串中获取bignumber,但二进制中的值是错误的。

        priKeyData = HexByteKit.Hex2Byte("b8dfc598d14c0bb032c1f4eb1fcdb033289002f38cc16b2120dfa697f8982bef");
        BigInteger priKeyBN2 = new BigInteger(priKeyData);
        String s3 = priKeyBN2.toString(2);
它给出了: -100011100100000001110100110011100101110101100111111010001001111110011010011111000001011000101001110000000110010010011111100110011010111011011111111110100001100011100110011111010010100110111101101111100100000010110010110100000000111011001111101010000010001

但是正确的应该是:

1011100011011111110001011001100011010001010011000000101110110000001100101100000111110100111010110001111111001101101100000011001100101000100100000000001011110011100011001100000101101011001000010010000011011111101001101001011111111000100110000010101111101111

http://www.mobilefish.com/services/big_number/big_number.php

正确的是256位,所以它在Java bignumber类中溢出? 那么如何在Java加密算法的某些步骤中使用这个256位数呢?

感谢。

1 个答案:

答案 0 :(得分:3)

我不知道HexByteKit是什么,但是从十六进制字符串构造BigInteger会得到正确的结果:

BigInteger priKeyBN2 = new BigInteger("b8dfc598d14c0bb032c1f4eb1fcdb033289002f38cc16b2120dfa697f8982bef", 16);
String s3 = priKeyBN2.toString(2);