注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

勇敢的劳尤条

 
 
 

日志

 
 

openssl命令行——RSA加解密(基本分析)  

2014-01-04 09:51:38|  分类: 软件安全以及传输 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先,openssl命令的基本格式如下,查看官网,在参考资料的链接。
openssl command [ command_opts ] [ command_args ]
(1)
openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
(2)
openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
(3)
openssl rsautl [-in file] [-out file] [-inkey file] [-pubin] [-certin] [-sign] [-verify] [-encrypt] [-decrypt] [-pkcs] [-ssl] [-raw] [-hexdump] [-asn1parse]

所以,下面实际操作一次。如果对参数不理解,点击【参考资料】的链接,比较详细。
首先生成私钥,私钥并未加密。

openssl genrsa -out test.key 1024

接着,生成对应的公钥。

openssl rsa -in test.key -pubout -out test_pub.key

这里,有一点要注意,这样生成的公钥,是无法用 PEM_read_RSAPublicKey 接口打开的,因为编码方式不一样。如果想要可以打开,必须这样生成公钥。这样的话,test_pub1.key可以用 PEM_read_RSAPublicKey 打开,而test_pub.key 可以用 PEM_read_RSA_PUBKEY  打开。下面将两个公钥文件都打开,可以看到他们的开头不一样。

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCteioi0oxi5+4ITHMOBKmMA7c
5jxW23g4uuLOfaKslSwgQB4Jc+SG2M1zs/kg46c5PPdh6OkISCTHzrAN3eZyKdxj
kSpXWvwnRvIZvg1qrhBcuIabacV0mojedX4akTGTaVRJi8xbSBJA6/7LCAHBKAbT
ko2UIYWEdb52lW/y/QIDAQAB
-----END PUBLIC KEY-----

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAMK16KiLSjGLn7ghMcw4EqYwDtzmPFbbeDi64s59oqyVLCBAHglz5IbY
zXOz+SDjpzk892Ho6QhIJMfOsA3d5nIp3GORKlda/CdG8hm+DWquEFy4hptpxXSa
iN51fhqRMZNpVEmLzFtIEkDr/ssIAcEoBtOSjZQhhYR1vnaVb/L9AgMBAAE=
-----END RSA PUBLIC KEY-----

openssl rsa -in test.key -RSAPublicKey_out -out test_pub1.key 

The RSAPublicKey functions process an RSA public key using an RSA structure. The public key is encoded using a PKCS#1 RSAPublicKey structure.

The RSA_PUBKEY functions also process an RSA public key using an RSA structure. However the public key is encoded using a SubjectPublicKeyInfo structure and an error occurs if the public key is not RSA.

现在,要对数据进行加密。hello.in是要加密的输入文件,fuck.out是输出的内容,-pubin表示用公钥加密,否则默认-inkey是使用私钥文件。没有-pubin,那么会报错,会出现 “unable to load Private Key” 。

openssl rsautl -in hello.in -out fuck.out -encrypt -pubin -inkey test_pub.key 

加密完成之后,fuck.out里面的内容可以cat查看,是一串乱码。接着解密。之前说了,-inkey默认使用私钥文件,所以下面的命令直接解出原文件。

openssl rsautl -in fuck.out -decrypt -inkey test.key

下面是加密解密截图
openssl命令行——RSA加解密 - yuanshuilee - 勇敢的劳尤条


关于使用API编程,参考推荐阅读  openssl之RSA编程
参考资料:
  评论这张
 
阅读(162)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017