【问题标题】:wrong BIGNUM initialization in OpenSSLOpenSSL 中的错误 BIGNUM 初始化
【发布时间】:2015-01-19 09:46:00
【问题描述】:

我有这样的代码:

BIGNUM *p = BN_new(), *B = BN_new(), *a = BN_new(), *ret = BN_new();

BN_bin2bn((uchar*)"\x01\x02\0x03\0",3,p);
BN_bin2bn((uchar*)"\x02\x03\0x04\0",3,B);
BN_bin2bn((uchar*)"\x03\x04\0x05\0",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 忽略输入的最后一个字节?有人知道吗?

【问题讨论】:

  • 好的,我看到了错字。如果有人想要积分,我会让他们回答:)

标签: c openssl bignum


【解决方案1】:

错误发生在:

BN_bin2bn((uchar*)"\x01\x02\**0x03**\0",3,p);
BN_bin2bn((uchar*)"\x02\x03\**0x04**\0",3,B);
BN_bin2bn((uchar*)"\x03\x04\**0x05**\0",3,a);

应该是

BN_bin2bn((uchar*)"\x01\x02\x03\0",3,p);
BN_bin2bn((uchar*)"\x02\x03\x04\0",3,B);
BN_bin2bn((uchar*)"\x03\x04\x05\0",3,a);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多