[openssl]pem文件及openssl-rsa使用

PEM全称是Privacy Enhanced Mail,该标准定义了加密一个准备要发送邮件的标准,主要用来将各种对象保存成PEM格式,并将PEM格式的各种对象读取到相应的结构中。它的基本流程是这样的:

  1. 信息转换为ASCII码或其它编码方式;
  2. 使用对称算法加密转换了的邮件信息;
  3. 使用BASE64对加密后的邮件信息进行编码;
  4. 使用一些头定义对信息进行封装,这些头信息格式如下(不一定都需要,可选的):
    Proc-Type,4:ENCRYPTED
    DEK-Info: cipher-name, ivec其中,第一个头信息标注了该文件是否进行了加密,该头信息可能的值包括ENCRYPTED(信息已经加密和签名)、MIC-ONLY(信息经过数字签名但没有加密)、MIC-CLEAR(信息经过数字签名但是没有加密、也没有进行编码,可使用非PEM格式阅读)以及CLEAR(信息没有签名和加密并且没有进行编码,该项好象是openssl自身的扩展,但是并没有真正实现);;第二个头信息标注了加密的算法以及使用的ivec参量,ivec其实在这儿提供的应该是一个随机产生的数据序列,与块加密算法中要使用到的初始化变量不一样。 。
  5. 在这些信息的前面加上如下形式头标注信息:
    -----BEGIN PRIVACY-ENHANCED MESSAGE-----
    在这些信息的后面加上如下形式尾标注信息:
    -----END PRIVACY-ENHANCED MESSAGE-----

注意:openssl并没有实现PEM的全部标准,它只是对openssl中需要使用的一些选项做了实现,详细的PEM格式,请参考RFC1421-1424

openssl使用:

生成私钥(genrsa):

genrsa [args] [numbits]
[numbits]: 密钥位数,建议1024及以上
[args]:
 -des            生成的密钥使用des方式进行加密
 -des3           生成的密钥使用des3方式进行加密
 -seed           生成的密钥还是要seed方式进行
 -aes128, -aes192, -aes256
                 生成的密钥使用aes方式进行加密
 -camellia128, -camellia192, –camellia256 
                 生成的密钥使用camellia方式进行加密
 -out [file]     生成的密钥文件,可从中提取公钥
 -passout arg    指定密钥文件的加密口令,可从文件、环境变量、终端等输入
 -f4             选择指数e的值为默认值为65537(0x10001)
 -[num]          选择指数e的值,默认值为65537,使用该选项则指数指定为[num]
 -engine e       指定三方加密库或者硬件
 -rand file:[file]:
                 产生随机数的种子文件
openssl genrsa -out private_key.pem 1024
//生成一个长度为1024的pem私钥文件

管理密钥(rsa):

rsa [options] <infile >outfile     
[options]:
 -inform [arg]     输入文件格式,默认pem格式
 -outform [arg]    输出文件格式,默认pem格式
 -in [arg]         输入文件
 -out [arg]        输出文件
 -passin [arg]     指定输入文件的加密口令,可来自文件、终端、环境变量等
 -passout [arg]    指定输出文件的加密口令,可来自文件、终端、环境变量等
 -sgckey           指定SGC编码格式,兼容老版本,不应再使用
 -des              使用des加密输出的文件
 -des3             使用des3加密输出的文件
 -seed             使用seed加密输出的文件
 -aes128, -aes192, -aes256
                   使用aes加密输出的文件
 -camellia128, -camellia192, -camellia256
                   使用camellia加密输出的文件呢
 -text             以明文形式输出各个参数值
 -noout            不输出密钥到任何文件
 -modulus          输出模数指
 -check            检查输入密钥的正确性和一致性
 -pubin            指定输入文件是公钥
 -pubout           指定输出文件是公钥
 -engine e         指定三方加密库或者硬件
openssl rsa -text -noout -modulus -in private_key.pem
//查看pem文件,输出模数
openssl rsa -in private_key.pem -pubout -out public_key.pem
//用私钥输出公钥

加密解密(rsautl)

rsautl [options]
[options]:
-in [file]      输入文件
-out [file]     输出文件
-inkey [file]   输入的密钥
-keyform [arg]  指定密钥格式
-pubin          指定输入的是RSA公钥
-certin         指定输入的是证书文件
-ssl            使用SSLv23的填充方式
-raw            不进行填充
-pkcs           使用V1.5的填充方式
-oaep           使用OAEP的填充方式
-sign           使用私钥做签名
-verify         使用公钥认证签名
-encrypt        使用公钥加密
-decrypt        使用私钥解密
-hexdump        以16进制dump输出
-engine e       指定三方库或者硬件设备
-passin [arg]   指定输入的密码
openssl rsautl -encrypt -inkey public_key.pem -pubin -in data.txt -out back.txt
//用public_key.pem公钥文件对data.txt文件进行加密输出back.txt文件
openssl rsautl -decrypt -inkey private_key.pem -in back.txt -out data.txt
//用private_key.pem私钥文件对back.txt文件进行解密输出data.txt文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值