openssl RSA公钥与从C代码读取的密钥不匹配
我使用以下命令创建了公钥文件:openssl RSA公钥与从C代码读取的密钥不匹配,c,openssl,public-key,der,C,Openssl,Public Key,Der,我使用以下命令创建了公钥文件: openssl genrsa -out mykey.pem 2046 openssl rsa -in mykey.pem -pubout > mykey.pub 然后我从一些C代码中读到: public_key = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL); 然后获取该公钥的DER格式: int len = i2d_RSAPublicKey (public_key, NULL); buf = (unsigned
openssl genrsa -out mykey.pem 2046
openssl rsa -in mykey.pem -pubout > mykey.pub
然后我从一些C代码中读到:
public_key = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL);
然后获取该公钥的DER格式:
int len = i2d_RSAPublicKey (public_key, NULL);
buf = (unsigned char *) malloc (len);
i2d_RSAPublicKey (public_key, &buf);
这里len==269
但是命令行openssl告诉我:
openssl rsa -outform der -pubin -inform pem -in mykey.pub | wc
writing RSA key
1 10 293
当我从openssl和我的C代码打印出DER表单时,它们显然不匹配,奇怪的是,我的C代码获得的DER有很多零
我可能做错了什么?我应该使用i2d\u RSA\u PUBKEY()获取订单。另外,将&buf传递给该方法应该会警告我指针正在被修改。我不知道它为什么会被修改,也不知道它在通话后指向了什么 现在我知道了
der_form = throw_away = (unsigned char *) malloc (len);
i2d_RSAPublicKey (public_key, &throw_away);
并使用der_表单的内容。我花了2个小时才找到这篇文章。我不知道为什么传入的指针会被修改,但这种两个指针的方法有效。