openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


rsautl是rsa的工具,相当于rsa、dgst的部分功能集合,可用于生成数字签名、验证数字签名、加密和解密文件

pkeyutl是非对称加密的通用工具,大体上和rsautl的用法差不多,所以此处只解释rsautl。

openssl rsautl [-in file] [-out file] [-inkey file] [-pubin] [-certin] [-passin arg] [-sign] [-verify] [-encrypt] [-decrypt] [-hexdump]

openssl pkeyutl [-in file] [-out file] [-sigfile file] [-inkey file] [-passin arg] [-pubin] [-certin] [-sign] [-verify] [-encrypt] [-decrypt] [-hexdump]

共同的选项说明:
-in file:指定输入文件
-out file:指定输出文件
-inkey file:指定密钥输入文件,默认是私钥文件,指定了"-pubin"则表示为公钥文件,使用"-certin"则表示为包含公钥的证书文件
-pubin:指定"-inkey file"的file是公钥文件
-certin:使用该选项时,表示"-inkey file"的file是包含公钥的证书文件
-passin arg:传递解密密码。若验证签名时实用的公钥或私钥文件是被加密过的,则需要传递密码来解密。密码的格式见"openssl 密码格式"
【功能选项:】
-sign:签名并输出签名结果,注意,该选项需要提供RSA私钥文件
-verify:使用验证签名文件
-encrypt:使用公钥加密文件
-decrypt:使用私钥解密文件
【输出格式选项:】
-hexdump:以hex方式输出 openssl pkeyutl选项说明:
sigfile file:待验证的签名文件

rsautl命令的用法和rsa、dgst不太一样。首先,它的前提是已经有非对称密钥,所有的命令操作都用到公钥或私钥来处理;再者,该命令使用-in选项来指定输入文件,而不像dgst一样可以把输入文件放在命令的结尾;最后,该命令使用的密钥文件、签名文件、证书文件都通过-inkey选项指定,再通过各功能的选项搭配来实现对应的功能。

注意rsautl和pkeyutl的缺陷是默认只能对短小的文件进行操作,否则将报类似如下的错误信息。

:error:0406C06E:rsa routines:RSA_padding_add_PKCS1_type_1:data too large for key size:rsa_pk1.c::

因为这两个工具签名和验证签名的功能和openssl dgst命令差不多,且自身又有缺陷,所以就不举例说明。此处仅给出对短小文件的非对称加密和解密示例。

(1).使用公钥加密b.txt文件,注意待加密文件b.txt必须是短小文件,且不建议使用-hexdump输出,否则解密时可能超出文件的长度。

[root@xuexi tmp]# openssl genrsa -out genrsa.pri   # 生成私钥

[root@xuexi tmp]# openssl rsa -in genrsa.pri -pubout -out rsa.pub   # 从私钥中提取公钥

[root@xuexi tmp]# openssl rsautl -encrypt -in b.txt -out b_crypt.txt -inkey rsa.pub -pubin

查看非对称加密后的文件b_crypt.txt。

[root@xuexi tmp]# cat b_crypt.txt
H[]=p?I,:=)Iڪ;Yx٩,vbot@xuexi tmp]#

(2).使用私钥解密b_crypt.txt文件。

[root@xuexi tmp]# openssl rsautl -decrypt -in b_crypt.txt -out b_decrypt.txt -inkey genrsa.pri

[root@xuexi tmp]# cat b_decrypt.txt
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap swap defaults

6.openssl rsautl和openssl pkeyutl的更多相关文章

  1. openssl rsautl和openssl pkeyutl(文件的非对称加密)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成 ...

  2. (8) openssl rsautl(签名/验证签名/加解密文件)和openssl pkeyutl(文件的非对称加密)

    rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成数字签名.验证数字签名.加密和解密文件. pkeyutl是非对称加密的通用工具,大体上和rsautl的用法差不多,所以此处只 ...

  3. Openssl rsautl命令

    一.简介 rsautl指令能够使用RSA算法签名,验证身份,加密/解密数据 二.语法 openssl rsautl [-in file] [-out file] [-inkey file] [-pas ...

  4. 3.openssl speed和openssl rand

    (1).openssl speed 测试加密算法的性能. 支持的算法有: openssl speed [md2] [mdc2] [md5] [hmac] [sha1] [rmd160] [idea-c ...

  5. php开启openssl的方法,openssl安装

    php开启openssl的方法,openssl安装 2014年10月10日 8312次浏览 什么是openssl? 关于openssl,我说的不如百度百科齐全,还是看看百度百科的解释吧!http:// ...

  6. openssl speed和openssl rand

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 openssl speed 测试加密算法的性能. 支持的算法有: o ...

  7. OpenSSL主配置文件openssl.cnf

    虽说配置文件很多设置不用修改就能直接使用,但是了解它是配置openssl相关事项所必须的.而且要实现复杂多功能,必然要对配置相关了然于心. 1.man config 该帮助文档说明了openssl.c ...

  8. ambari2.6.50 openssl 版本问题:SSLError: Failed to connect. Please check openssl library versions. Openssl error upon host registration

    I'm trying to register hostnames in Ambari but getting the error below. We tried to run yum update o ...

  9. 【openssl】利用openssl完成X509证书和PFX证书之间的互转

    利用openssl完成X509证书和PFX证书之间的互转 # OpenSSL的下载与安装: 1.下载地址: 官方网址—— https://www.openssl.org/source/ OpenSSL ...

随机推荐

  1. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. Katana

    - KAT101 - Katana has many nodes for operation, e.g. MaterialAssign, - The connections between nodes ...

  3. OAF_开发系列27_实现OAF中Java类型并发程式开发调用XML Publisher(案例)

    20150814 Created By BaoXinjian

  4. es6 class

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. 使用Spring+Junit4.4进行测试(使用注解)

    http://nottiansyf.iteye.com/blog/345819 使用Junit4.4测试 在类上的配置Annotation @RunWith(SpringJUnit4ClassRunn ...

  6. js 毫秒转日期(yy-MM-dd hh:mm:ss)

    var seconds = "133343241342";//毫秒数 var objtime = new Date();//声明一个日期内建函数 objtime.setTime(s ...

  7. Python多线程join的用法

    import threading, time def Myjoin(): print 'hello world!' time.sleep(1) for i in range(5): t=threadi ...

  8. Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels.

    Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels. Edit .ovpn configfile “dev ...

  9. 【HOW】如何限制Reporting Services报表导出功能中格式选项

    Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...

  10. Map接口

    Map实现的包括HashMap 和TreeMap .建议使用HashMap ,效率更高.并且允许使用null值,单是必须保证键的唯一性,TreeMap不允许有空.在添加删除和定位映射关系的时候不如Ha ...