小编bal*_*aco的帖子

从文件中检索私有/公共KEY(OpenSSL)时的随机字符

我正在尝试制作一个程序,在使用OppenSSL EC函数生成公钥/私钥对后,EC_KEY_generate_key将它们存储在单独的文件中并检索它们以生成ECDH KEY.

我的问题是虽然我正确地存储它们(没有任何附加字符),当我读取文件并尝试将十六进制字符转换为BIGNUM时,随机出现一个字符'04'或'00'(甚至有时不出现).因此,当我尝试设置公钥/私钥并检查整个密钥时,它会失败.任何人都可以帮我解决这个问题吗?密钥检查失败是由这些字符引起的还是正常的?

这是我生成/存储私钥的代码(公共密钥是相同的):

    EC_KEY *b = NULL;
const BIGNUM *ppriv_b;
FILE *claveprivb;
const EC_GROUP *group;

b = EC_KEY_new_by_curve_name(NID_X9_62_prime192v1);
group = EC_KEY_get0_group(b);

EC_KEY_generate_key(b);
    claveprivb = fopen("/tmp/mnt/claveprivb", "w+");
    ppriv_b = EC_KEY_get0_private_key(b);
if ((ppriv_b != NULL)) 
    BN_print_fp(claveprivb,ppriv_b);
    fclose(claveprivb);

    //Afterwards do the same with the public key
Run Code Online (Sandbox Code Playgroud)

这是我检索私钥的代码:

    int i, s, blen, bout, ret = 0;
unsigned char *bbuf;
FILE *clavepriv, *clavetotalb;
const char cpriv_string[PRIVATE_KEY_SIZE];
BIGNUM *priv;
EC_KEY *b = NULL;
const EC_GROUP *groupb;

    b = EC_KEY_new_by_curve_name(NID_X9_62_prime192v1);
groupb = EC_KEY_get0_group(b);
    //Open the …
Run Code Online (Sandbox Code Playgroud)

openssl elliptic-curve

4
推荐指数
1
解决办法
1603
查看次数

标签 统计

elliptic-curve ×1

openssl ×1