用PEM_read_bio_RSAPublicKey读取公钥失败

lfisher 2009-02-18 09:28:40
先用openssl genrsa -out rsakey0.pem 1024
生成了私钥文件,然后在用openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem生成公钥文件

用VC开发加解密的程序:
私钥部分:
BIO *key=NULL;
RSA *r=NULL;
ERR_load_crypto_strings();
key=BIO_new(BIO_s_file());
BIO_read_filename(key,"rsakey0.pem");

r = PEM_read_bio_RSAPrivateKey(key,NULL,NULL,NULL);

正常!!

公钥部分:
BIO *key=NULL;
RSA *r=NULL;
ERR_load_crypto_strings();
key=BIO_new(BIO_s_file());
BIO_read_filename(key,"rsakey0-pub.pem");

r = PEM_read_bio_RSAPublicKey(key,NULL,NULL,NULL);

r返回为NULL.

百思不得其解,望高手指教!!!!!
...全文
6026 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
melochale 2012-09-27
  • 打赏
  • 举报
回复
对应的很工整是不是,你生成一个私钥,然后用它生成一个公钥。
openssl genrsa -out private.pem 1024
openssl rsa -in priv.pem -pubout -out public.pem
用任何一种方法打开私钥,读取私钥信息,得到RSA,查看RSA,ok,没有问题,一切都还看起来比较正常。
然后用任何一种方法打开公钥,读取公钥信息,问题出现了:RSA对象为空,你失败了。

通过openssl的手册和帮助,你会发现两个函数:
PEM_read_bio_RSA_PUBKEY()
PEM_read_RSA_PUBKEY()
他们才是你要找的对应的,而上面两个函数是从任何.h里面找不到的,但是他们的确是真实存在的符号连接,在对应的.o文件中用objdump可以查看到他们的符号,很诡异!
现象描述完了,还未探其究竟。
转自:http://blog.chinaunix.net/uid-233938-id-162630.html
bm425 2012-08-10
  • 打赏
  • 举报
回复
没看懂,还是没办法
nicky_yangke 2012-05-29
  • 打赏
  • 举报
回复
支付宝iOS版Demo的Bug
iOS版的Demo(2012年4月19日版)AlixPayDemo中RSADataSigner.m文件中Ln 62和Ln 79行中要加上RSA
原来:

[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];



[result appendString:@"\n-----END PRIVATE KEY-----"];



应改为:
[result appendString:@"-----BEGIN RSA PRIVATE KEY-----\n"];


[result appendString:@"\n-----END RSA PRIVATE KEY-----"];




否则无法读取私钥,会报 Private Key Read error
nicky_yangke 2012-05-29
  • 打赏
  • 举报
回复
支付宝iOS版Demo的Bug
iOS版的Demo(2012年4月19日版)AlixPayDemo中RSADataSigner.m文件中Ln 62和Ln 79行中要加上RSA
原来:
复制代码
[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];


复制代码
[result appendString:@"\n-----END PRIVATE KEY-----"];



应改为:
复制代码
[result appendString:@"-----BEGIN RSA PRIVATE KEY-----\n"];


复制代码
[result appendString:@"\n-----END RSA PRIVATE KEY-----"];




否则无法读取私钥,会报 Private Key Read error
Tom_殇子 2012-04-23
  • 打赏
  • 举报
回复
大哥!我遇到了类拟的问题!请问你这个问题怎么解决的?
youthboy 2012-04-15
  • 打赏
  • 举报
回复

0down voteaccepted
You might try PEM_read_RSA_PUBKEY() instead of PEM_read_RSAPublicKey().
This is all about formats.
The default public key file format generated by openssl is the PEM format.
PEM_read_RSA_PUBKEY() reads the PEM format. PEM_read_RSAPublicKey() reads the PKCS#1 format.
So if you want to stick to PEM_read_RSAPublicKey() you could generate the public key file using the PKCS#1 format by specifying the -outform DER option when generating the public key.


http://stackoverflow.com/questions/7818117/why-i-cant-read-openssl-generated-rsa-pub-key-with-pem-read-rsapublickey

找到相关提示,目前还在测试中,能读出r,但是i2d_RSAPublicKey 读出的publickey不正确。
ku281 2011-07-18
  • 打赏
  • 举报
回复
和你一样啊。两年了 也没有见人解决吗?
lfisher 2009-02-20
  • 打赏
  • 举报
回复
请高手指点!
lfisher 2009-02-19
  • 打赏
  • 举报
回复
没人懂么?
自己先顶一个!
课程亮点: 从无到有、手把手教你编写CA/TA,快速上手,快速部署项目标准的开发,开发一套CA/TA,可部署到不同的TEE OS上。受益人群: 汽车行业主机厂、tier1、SOC芯片公司的安全部门同事手机行业,ODM/OEM、SOC芯片公司的安全部门同事学生课程收益: 熟悉CA/TA开发的步骤和流程。快速上手,快速搭建自己开发环境。熟悉各类TEE、基于各类TEE的CA/TA开发步骤。搭建自己的安全平台熟悉各类常规安全应用熟悉tee密码学算法、tee存储  课程大纲  Hello大家好,上架一门新的视频课程,课程主要包含两大部分,第一部分搭建环境,第二部分从无到有的编写代码。带领大家手把手编写。 具体大纲如下:(1)qemu v8环境搭建- 搭建一个qemu_v8的环境,用于跑BL1-->BL2-->BL31-->BL32-->BL33-->Linux kernel;- 直接使用已搭建好的镜像- 工程使用以及说明(2)CA/TA开发编程实践从无到有编写代码,已完成的大纲如下:- 2秒钟快速编写(clone)一组CA/TA程序- 安全存储详解以及代码示例- CA到TA双向传参数的四种方式(value、temref、memref),区别?优缺点?- 对称密码学算法aes的使用,CBC/ECB/CTR/XTS分组密码的使用,加密解密,pending等- aeskey的操作,如何随机生成aeskey(TEE_GenerateKey),objectHandle和aesbuf有什么区别? 如何将handle- 认证加密算法,如aes-GCM的使用- 非对称密码学算法RSA的使用,包括加密、解密、签名、验签- RSA key的处理,包含如何生成RSA KEYrsakey object如何转换成可见的数组,如何转换der,如何转换pem,反向又如何转换- ECC/ECDSA的使用- 国密sm2 sm3 sm4的使用.  其中sm4包含加密、解密、签名、验签等- encode和decode的实现- TA属性的定制以及API的使用- 数字摘要  SHA1 sha224 sha256 sha384 sha512等- 消息认证码 HMAC- TEE侧获取时间的函数有哪些(TEE_GetSystemTime、TEE_GetREETime),有什么区别?分别是怎样使用的? - 如何获取随机数(TEE_GenerateRandom)?- TA调用TA的示例和演示后续可能继续补充的如下(也欢迎大家提需求):- multi-session和multi-instance的使用- CA LOGIN flag的使用 

4,451

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧