OpenSSL 中错误的 BIGNUM 初始化
wrong BIGNUM initialization in OpenSSL
我有这样的代码:
BIGNUM *p = BN_new(), *B = BN_new(), *a = BN_new(), *ret = BN_new();
BN_bin2bn((uchar*)"\x01\x02[=10=]x03[=10=]",3,p);
BN_bin2bn((uchar*)"\x02\x03[=10=]x04[=10=]",3,B);
BN_bin2bn((uchar*)"\x03\x04[=10=]x05[=10=]",3,a);
Print_Format("p: %s",BN_bn2dec(p)); //expected: 66051, prints 66048
Print_Format("B: %s",BN_bn2dec(B)); //expected: 131844, prints 131840
Print_Format("a: %s",BN_bn2dec(a)); //expected: 197637, prints 197632
打印输出结果错误。当我将代码给出的结果转换为十六进制数时,它看起来像这样:
010203 => 010200
020304 => 020300
030405 => 030400
为什么 BN_bin2n
忽略输入的最后一个字节?有人知道吗?
错误发生在:
BN_bin2bn((uchar*)"\x01\x02\**0x03**[=10=]",3,p);
BN_bin2bn((uchar*)"\x02\x03\**0x04**[=10=]",3,B);
BN_bin2bn((uchar*)"\x03\x04\**0x05**[=10=]",3,a);
应该是
BN_bin2bn((uchar*)"\x01\x02\x03[=11=]",3,p);
BN_bin2bn((uchar*)"\x02\x03\x04[=11=]",3,B);
BN_bin2bn((uchar*)"\x03\x04\x05[=11=]",3,a);
我有这样的代码:
BIGNUM *p = BN_new(), *B = BN_new(), *a = BN_new(), *ret = BN_new();
BN_bin2bn((uchar*)"\x01\x02[=10=]x03[=10=]",3,p);
BN_bin2bn((uchar*)"\x02\x03[=10=]x04[=10=]",3,B);
BN_bin2bn((uchar*)"\x03\x04[=10=]x05[=10=]",3,a);
Print_Format("p: %s",BN_bn2dec(p)); //expected: 66051, prints 66048
Print_Format("B: %s",BN_bn2dec(B)); //expected: 131844, prints 131840
Print_Format("a: %s",BN_bn2dec(a)); //expected: 197637, prints 197632
打印输出结果错误。当我将代码给出的结果转换为十六进制数时,它看起来像这样:
010203 => 010200
020304 => 020300
030405 => 030400
为什么 BN_bin2n
忽略输入的最后一个字节?有人知道吗?
错误发生在:
BN_bin2bn((uchar*)"\x01\x02\**0x03**[=10=]",3,p);
BN_bin2bn((uchar*)"\x02\x03\**0x04**[=10=]",3,B);
BN_bin2bn((uchar*)"\x03\x04\**0x05**[=10=]",3,a);
应该是
BN_bin2bn((uchar*)"\x01\x02\x03[=11=]",3,p);
BN_bin2bn((uchar*)"\x02\x03\x04[=11=]",3,B);
BN_bin2bn((uchar*)"\x03\x04\x05[=11=]",3,a);