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

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


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选项指定,再经过各功能的选项搭配来实现对应的功能。spa

注意rsautl和pkeyutl的缺陷是默认只能对短小的文件进行操做,不然将报相似以下的错误信息。code

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

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

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

[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。ssl

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

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

[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        0 0
相关文章
相关标签/搜索