gpt4 book ai didi

将作为字符串给出的大数字转换为 OpenSSL BIGNUM

转载 作者:太空狗 更新时间:2023-10-29 14:54:52 26 4
gpt4 key购买 nike

我正在尝试使用 OpenSSL 库将表示大整数的字符串 p_str 转换为 BIGNUM p

#include <stdio.h>
#include <openssl/bn.h>

int main ()
{
/* I shortened the integer */
unsigned char *p_str = "82019154470699086128524248488673846867876336512717";

BIGNUM *p = BN_bin2bn(p_str, sizeof(p_str), NULL);

BN_print_fp(stdout, p);
puts("");

BN_free(p);
return 0;
}

编译它:

gcc -Wall -Wextra -g -o convert convert.c -lcrypto

但是,当我执行它时,我得到以下结果:

3832303139313534

最佳答案

unsigned char *p_str = "82019154470699086128524248488673846867876336512717";

BIGNUM *p = BN_bin2bn(p_str, sizeof(p_str), NULL);

改用 int BN_dec2bn(BIGNUM **a, const char *str)

当你有一个 bytes 数组(而不是 NULL 终止的 ASCII 字符串)时,你会使用 BN_bin2bn

手册页位于 BN_bin2bn(3) .

正确的代码应该是这样的:

#include <stdio.h>
#include <openssl/bn.h>

int main ()
{
static const
char p_str[] = "82019154470699086128524248488673846867876336512717";

BIGNUM *p = BN_new();
BN_dec2bn(&p, p_str);

char * number_str = BN_bn2hex(p);
printf("%s\n", number_str);

OPENSSL_free(number_str);
BN_free(p);

return 0;
}

关于将作为字符串给出的大数字转换为 OpenSSL BIGNUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com