【问题标题】:Multiply a BigNum with an plain integer将 BigNum 与普通整数相乘
【发布时间】:2019-02-03 19:38:21
【问题描述】:

我有以下功能:

BIGNUM * multiplyWithInt(BIGNUM *bn, int val){
  //Logic Here
}

我尝试做的是计算乘法bn*val。根据文档(从命令man bn 给出)的乘法如下:

int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);

如您所见,我需要以某种方式将整数 val 转换为 openssl 的 BIGNUM。我怎么能这样做?一种方法是将其转换为 unsigned char * 字节数组并使用 BN_bin2bn 函数,但这会给我想要的功能吗?

【问题讨论】:

    标签: c openssl bignum


    【解决方案1】:

    您要查找的函数是BN_set_word。这会将unsigned long 值分配给BIGNUM

    BIGNUM *bn_val = BN_new();
    BN_set_word(bn_val , val);
    

    然后您可以将bn_valbn 传递给BN_mul

    【讨论】:

    • 所以为了使用它,我只需要将我的int 转换为unsigned long 对吗?
    • @DimitriosDesyllas 无需投射。该值将自动转换。但是请注意,您不能使用负值。
    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多