免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17735 | 回复: 8
打印 上一主题 下一主题

[算法] 使用openssl生成PEM格式私钥和公钥的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-03 22:27 |只看该作者 |倒序浏览
10可用积分
本帖最后由 osmanthusgfy 于 2012-10-03 23:06 编辑

使用openssl生成RSA PEM格式私钥和公钥代码大致如下:
  1.    
  2.     /* 生成公钥 */
  3.     RSA* rsa = RSA_generate_key( 1024, RSA_F4, NULL, NULL);

  4.     BIO *bp = BIO_new( BIO_s_file() );

  5.     BIO_write_filename( bp, "public.pem" );
  6.     PEM_write_bio_RSAPublicKey(bp, rsa);

  7.     BIO_free_all( bp );
  8.    
  9.    
  10.      /* 生成私钥 */
  11.     char passwd[]="1234";

  12.     bp = BIO_new_file("private.pem", "w+");
  13.    
  14.     PEM_write_bio_RSAPrivateKey(bp, rsa, EVP_des_ede3(), (unsigned char*)passwd, 4, NULL, NULL);
  15.    
  16.     BIO_free_all( bp );
复制代码
读取私钥:

  1.     OpenSSL_add_all_algorithms();
  2.    
  3.     BIO* bp = BIO_new( BIO_s_file() );

  4.     BIO_read_filename( bp, "private.pem" );
  5.    
  6.     char passwd[]="1234";
  7.     RSA* rsaK = PEM_read_bio_RSAPrivateKey( bp, NULL, NULL, passwd );
复制代码
读取公钥:

  1.     OpenSSL_add_all_algorithms();
  2.    
  3.    
  4.     BIO* bp = BIO_new( BIO_s_file() );

  5.     BIO_read_filename( bp, "public.pem" );
  6.     RSA* rsaK = PEM_read_bio_RSAPublicKey( bp, NULL, NULL, NULL );
复制代码
请问: 如果公钥和私钥的PEM文件都被泄漏, 在不知道passwd的情况下, 能快速被破解吗?
也就从PEM文件中获得正确的私钥.

最佳答案

查看完整内容

对ssl编程不熟,但是以我的认识,你用des对私钥进行了加密,那么所谓解密私钥就成了des的破解问题,理论上可以,实际有多快不清楚。(密码是1234的话应该很快就是了)

论坛徽章:
0
2 [报告]
发表于 2012-10-03 22:27 |只看该作者
对ssl编程不熟,但是以我的认识,
你用des对私钥进行了加密,那么所谓解密私钥就成了des的破解问题,
理论上可以,实际有多快不清楚。(密码是1234的话应该很快就是了)

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-10-03 22:33 |只看该作者
私钥不是加密了吗, 相信它.

论坛徽章:
0
4 [报告]
发表于 2012-10-03 22:41 |只看该作者
回复 2# linux_c_py_php
大哥的意思是在不知道password的情况下,就算获得私钥文件也不能解密?

   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-10-04 00:03 |只看该作者
想解密就要知道你的密码1234, 人家如果要破解你也挡不住.

osmanthusgfy 发表于 2012-10-03 22:41
回复 2# linux_c_py_php
大哥的意思是在不知道password的情况下,就算获得私钥文件也不能解密?

论坛徽章:
0
6 [报告]
发表于 2012-10-04 22:50 |只看该作者
回复 5# sacry
私钥加密不一定是使用DES, 还可能是其他对称加密算法(AES等).
所以我的问题的答案是私钥加密的安全性与密码的长度和加密算法有关.综合比较,我推荐使用AES.
当然, 最好避免私钥泄密.



   

论坛徽章:
0
7 [报告]
发表于 2012-10-04 22:54 |只看该作者
再次感谢 linux_c_py_php 和 sacry 两位大哥!
感谢你们促进我对加密有较深入的探讨.

论坛徽章:
0
8 [报告]
发表于 2012-10-04 23:39 |只看该作者
私钥用DES给加密了,这加密/解密不至于会是纯手工活吧?怎么也得用程序来干吧?

要命的是,如果不是纯手工活。。。passwd明文直接嵌入了程序
既然公钥PEM文件和私钥的PEM文件(用DES加密过)都能被泄露了,也难保这个为私钥加密/解密的容器(程序)不泄露吧?
遇见个反汇编高手,还不两三下就把密码给抠出来了瓦?

论坛徽章:
0
9 [报告]
发表于 2012-10-05 00:34 |只看该作者
回复 8# 围观秀底线
私钥加密密码不一定要写死.

编程生成公钥和私钥, 应用场景举一个例子:
临时生成公钥和私钥,通信端点以此加密之间的通信,


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP