OpenSSL语法格式

openssl command [ command_opts ] [ command_args ]
openssl [ list-standard-commands | list-message-digest-commands | list-cipher-commands | list-cipher-algorithms | list-message-digest-algorithms | list-public-key-algorithms]
openssl no-XXX [ arbitrary options ]



1.enc/对称加密


  数据加密

enc的选项
enc命令的选项
默认值
备注
-in filename
标准输入
输入文件
-out filename
标准输出
输出文件
-pass arg

密码源

允许密码从多个途径获取,如果没有命令没有获取到密码,会从终端索取(不回显)。

-e
默认选项
加密输入的数据
-d

解密输入的数据
-salt
默认选项
加密时密文参杂
-S salt

salt应该是一个“十六进制字符串“
-ciphername

加密方法:

bf、cast、des、des3、idea、rc2、rc4、rc5、aes


使用des3加密算法
加密数据:
$ openssl enc -des3 -in fstab -out fstab.desc -pass pass:123456 && echo $?
0
$ echo "Hello kitty" | openssl enc -des3 -pass pass:22886068
Salted__N|-O
               {Fv[work@tri ~]$
解密数据:
[view@tri ~]$ cat mimi
Salted__L^vp\p{?[work@tri ~]$ cat mimi | openssl enc -des3 -d -pass pass:22886068
Hello kitty
使用rc4加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -rc4 -out xiaobao.rc4 -pass pass:238997342
[view@tri ~]$ openssl enc -des3 -d -in xiaobao.rc4 -pass pass:238997342
bad decrypt
140418528815008:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:597:
?i9Z[work@tri ~]$ openssl enc -rc4 -d -in xiaobao.rc4 -pass pass:238997342
Hello xiaobao
使用cast加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -cast -out xiaobao.cast -pass pass:238997342
[view@tri ~]$ openssl enc -cast -d -in xiaobao.cast -pass pass:238997342
Hello xiaobao
使用bf加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -bf -out xiaobao.bf -pass pass:238997342
[view@tri ~]$ openssl enc -bf -d -in xiaobao.bf -pass pass:238997342
Hello xiaobao
使用aes加密算法
[view@tri ~]$ cat xiaobao
hello moyan.
[view@tri ~]$ openssl enc -aes-256-cbc -S "1ae3b897" -in xiaobao -out xiaobao.aes -pass pass:123lkjl3
[view@tri ~]$ openssl enc -aes-256-cbc -d -in xiaobao.aes -pass pass:123lkjl3
hello moyan.



2.哈希密码


2.1.passwd

  密码加密

passwd的选项
passwd命令的选项
默认值
备注
-ciphername
-crypt crypt/1/apr1
-salt
默认(随机参杂)

-in
默认(标准输入)

-table

把输入同步输出


[view@tri ~]$ openssl passwd -crypt -salt 7/.wkd.p -table 123456
123456    7/.387fViF0wA
[view@tri ~]$ openssl passwd -1 -salt 7/.wkd.p -table 123456
123456    $1$7/.wkd.p$1kZ1FhmTOCnUZSx2nKMpv1
[view@tri ~]$ openssl passwd -apr1 -salt 7/.wkd.p -table 123456
123456    $apr1$7/.wkd.p$E11X7W/a44L/gU9tKOwXx.


2.2.dgst

dgst的选项
dgst命令的选项
默认值
备注
输出格式
-hex

hex/c/d/binary

十六进制/带冒号的十六进制/包含调试信息的十六进制/二进制格式

-out
标准输出
输出到指定的文件
-sign file


-verify file


-prverify file

-keyform arg

-signature file

签名验证
加密格式

-md4/-md5/-ripemd160/-sha/-sha224

-sha256/-sha384/-sha512/-whirlpool


md5
[view@tri ~]$ openssl dgst -md5 -hex doc1 doc2
MD5(doc1)= 66ccbf65cfdd62597d3a7aaabd8a24c7
MD5(doc2)= f08ccb550ba74728534dd467e324bb7c
[view@tri ~]$ md5sum doc1 doc2
66ccbf65cfdd62597d3a7aaabd8a24c7  doc1
f08ccb550ba74728534dd467e324bb7c  doc2
sha256
[view@tri ~]$ openssl dgst -sha256 -hex doc1 doc2
SHA256(doc1)= 0520f85b16f1baa6ca41878981bf1848bcce551fc2c7f1e6d2297fc6ed0389ea
SHA256(doc2)= 8851eae4bc339dcfde0a378cc2bd1be0b94e7e126c34e5dd72b8c5728f13fc36



3.对称密钥


  

3.1.genpkey/创建私钥

genpkey的选项
genpkey命令的选项 默认值
备注
-out filename
标准输出
指定输出文件名
-outform

指定输出格式:DER/PEM
-pass arg

加密私钥的密码
-cipher

指定加密私钥的算法
-paramfile file

参数文件
-algorithm alg

DSA/RSA/DH


创建RSA私钥
[view@tri ~]$ openssl genpkey -algorithm RSA
生成DSA密钥参数
[view@tri ~]$ openssl genpkey -genparam -algorithm DSA -out dsap.pem
生成DSA私钥
[view@tri ~]$ openssl genpkey -paramfile dsap.pem -out dsakey.pem


3.2.pkey/管理私钥

pkey的选项
pkey命令的选项
默认值
备注
-inform
PEM
DER/PEM
-outform
PEM
DER/PEM
-in filename

标准输入
-out filename

标准输出
-passin arg

原密码
-passout arg

新密码
-cipher

加密算法
-pubout
私钥
输出公钥


私钥加密
[view@tri ~]$ openssl pkey -in dsakey.pem -des3 -out dsakey.des3
转换私钥格式为DER
[view@tri ~]$ openssl pkey -in dsakey.pem -outform DER -out dsakey.der
输出公钥
[view@tri ~]$ openssl pkey -in dsakey.pem -pubout
[view@tri ~]$ openssl pkey -in dsakey.des3 -pubout
Enter pass phrase for dsakey.des3:
[view@tri ~]$ openssl pkey -inform DER -in dsakey.der -pubout



3.3.RSA/DSA/密钥管理


RSA/DSA公共选项
默认值
备注
-in filename 标准输入

-passin arg
密码源
-out filename 标准输出
-passout arg
密码源
加密选项

-des  -des3  -idea
-text


-noout


-modulus


-pubin

指定读取为“公钥"
-pubout

指定输出为“公钥”
-engine id



3.3.1.RSA

RSA选项
RSA公共选项 默认值
备注
-inform PEM|NET|DER PEM
密钥格式
-outform PEM|NET|DER PEM

-sgckey

-check


3.3.2.DSA

DSA选项
DSA公共选项 默认值
备注
-inform PEM|DER PEM
密钥格式
-outform PEM|DER PEM


删除密码
[view@tri ~]$ openssl rsa -in key.pem -out keyout.pem
增加密码
[view@tri ~]$ openssl rsa -in key.pem -des -out keyout.pem
格式转换
[view@tri ~]$ openssl dsa -in key.pem -outform DER -out keyout.der
查看私钥信息
[view@tri ~]$ openssl rsa -in key.pem -text -noout
输出公钥
[view@tri ~]$ openssl rsa -in key.pem -pubout -out pubkey.pem




使用openssl实现数据加密_第1张图片