OpenSSL命令行工具验证RSA加解密

原文地址:http://blog.csdn.net/zhangyang0402/article/details/4071196


一、发送方A:

生成私钥:

OpenSSL> genrsa -passout pass:123456 -out apri.pem 1024

生成公钥:

OpenSSL> rsa -passin pass:123456 -pubout -in apri.pem -out apub.pem

用B的公钥加密数据:

OpenSSL> rsautl -encrypt -pubin -inkey bpub.pem -in data.txt -out edata.txt

计算数据的消息摘要:

OpenSSL> dgst -sha1 -out md.txt data.txt

用A的私钥给消息摘要签名:

OpenSSL> rsautl -sign -inkey apri.pem -in md.txt -out signature.bin

将edata.txt和signature.bin发送给接收方B

 

二、接收方B

生成私钥:

OpenSSL> genrsa -passout pass:654321 -out bpri.pem 1024

生成公钥:

OpenSSL> rsa -passin pass:654321 -pubout -in bpri.pem -out bpub.pem

 

用B的私钥解密数据:

OpenSSL> rsautl -decrypt -inkey bpri.pem -in edata.txt -out data.txt

计算data.txt的信息摘要:

OpenSSL> dgst -sha1 -out ms2.txt data.txt

用A的公钥解密数字签名:

OpenSSL> rsautl -verify -pubin -inkey apub.pem -in signature.bin -out ms3.txt

最后比较:ms2.txt 和ms3.txt内容完全相同:

SHA1(data.txt)= ad6910d33d5f96cbd7b9b3378107b8b04ba1c138



另外的一些常用命令:

openssl简介-指令rsa
    用法 
    
    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] 
    
    
    说明: 
   rsa指令专门处理RSA密钥.其实其用法和dsa的差不多. 

    
    OPTIONS 
    -inform DER|PEM|NET 
    指定输入的格式是DEM还是DER还是NET.注意, 这里多了一种格式,就是NET,DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式.你去看看你做出来的那些.key, .crt文件一般都是PEM格式的,第一行和最后一行指明内容,中间就是经过编码的东西。NET格式在本章后面会详细解释. 


    -outform DER|PEM|NET 
    和上一个差不多,不同的是指定输出格式 


    -in filename 
    要分析的文件名称。如果文件有密码保护,会要你输入的. 


    -passin arg 
    去看看CA那一章关于这个option的解释吧。 


    -out filename 
    要输出的文件名。 


    -passout arg 
    没什么用的一个选项,用来把保护key文件的密码输出的,意义和passin差不多。 


    -sgckey 
    配合NET格式的私有密钥文件的一个option, 没有必要去深入知道了。 


    -des|-des3|-idea 
    指明用什么加密算法把我们的私有密钥加密。加密的时候会需要我们输入密码来保护该文件的。如果这仨一个都没有选,那么你的私有密钥就以明文写进你的key文件。该选项只能输出PEM格式的文件。 


    -text 
    打印出私有密钥的各个组成部分. 


    -noout 
    不打印出key的编码版本信息。 


    -modulus 
    把其公共密钥的值也打印出来 


    -pubin 
    缺省的来说是从输入文件里读到私有密钥,这个就可以从输入文件里去读公共密钥. 


    -pubout 
    缺省的来说是打印出私有密钥,这个就可以打印公共密钥.如果上面那个选项有set那么这个选项也自动被set. 


    -check 
    检查RSA的私有密钥是否被破坏了这个指令实在和dsa太相似了。copy的我手软。 
    现在解释一下NET是一种什么格式。它是为了和老的netscape server以及IIS兼容才弄出来的。他使用没有被salt过的RC4做加密算法,加密强度很底,如果不是一定要用就别用。 


    举例时间: 
    把RSA私有密钥文件的保护密码去掉(最好别这么做) 
    openssl rsa -in key.pem -out keyout.pem 


    用DES3算法加密我们的私有密码文件: 
    openssl rsa -in key.pem -des3 -out keyout.pem 


    把一个私有密钥文件从PEM格式转化成DER格式: 
    openssl rsa -in key.pem -outform DER -out keyout.der 


    把私有密钥的所有内容详细的打印出来: 
    openssl rsa -in key.pem -text -noout 


    只打印出公共密钥部分: 
    openssl rsa -in key.pem -pubout -out pubkey.pem


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值