OpenSSL对称加密
OpenSSL版本
# ??? @ ??? in ~/workspace/博客/ [23:44:33] C:130
$ openssl version
OpenSSL 1.1.1h 22 Sep 2020
OpenSSL支持的对称加密算法
openssl enc -list
- -aes-128-cbc
- -aes-128-cfb
- -aes-128-cfb1
- -aes-128-cfb8
- -aes-128-ctr
- -aes-128-ecb
- -aes-128-ofb
- -aes-192-cbc
- -aes-192-cfb
- -aes-192-cfb1
- -aes-192-cfb8
- -aes-192-ctr
- -aes-192-ecb
- -aes-192-ofb
- -aes-256-cbc
- -aes-256-cfb
- -aes-256-cfb1
- -aes-256-cfb8
- -aes-256-ctr
- -aes-256-ecb
- -aes-256-ofb
- -aes128
- -aes128-wrap
- -aes192
- -aes192-wrap
- -aes256
- -aes256-wrap
- -aria-128-cbc
- -aria-128-cfb
- -aria-128-cfb1
- -aria-128-cfb8
- -aria-128-ctr
- -aria-128-ecb
- -aria-128-ofb
- -aria-192-cbc
- -aria-192-cfb
- -aria-192-cfb1
- -aria-192-cfb8
- -aria-192-ctr
- -aria-192-ecb
- -aria-192-ofb
- -aria-256-cbc
- -aria-256-cfb
- -aria-256-cfb1
- -aria-256-cfb8
- -aria-256-ctr
- -aria-256-ecb
- -aria-256-ofb
- -aria128
- -aria192
- -aria256
- -bf
- -bf-cbc
- -bf-cfb
- -bf-ecb
- -bf-ofb
- -blowfish
- -camellia-128-cbc
- -camellia-128-cfb
- -camellia-128-cfb1
- -camellia-128-cfb8
- -camellia-128-ctr
- -camellia-128-ecb
- -camellia-128-ofb
- -camellia-192-cbc
- -camellia-192-cfb
- -camellia-192-cfb1
- -camellia-192-cfb8
- -camellia-192-ctr
- -camellia-192-ecb
- -camellia-192-ofb
- -camellia-256-cbc
- -camellia-256-cfb
- -camellia-256-cfb1
- -camellia-256-cfb8
- -camellia-256-ctr
- -camellia-256-ecb
- -camellia-256-ofb
- -camellia128
- -camellia192
- -camellia256
- -cast
- -cast-cbc
- -cast5-cbc
- -cast5-cfb
- -cast5-ecb
- -cast5-ofb
- -chacha20
- -des
- -des-cbc
- -des-cfb
- -des-cfb1
- -des-cfb8
- -des-ecb
- -des-ede
- -des-ede-cbc
- -des-ede-cfb
- -des-ede-ecb
- -des-ede-ofb
- -des-ede3
- -des-ede3-cbc
- -des-ede3-cfb
- -des-ede3-cfb1
- -des-ede3-cfb8
- -des-ede3-ecb
- -des-ede3-ofb
- -des-ofb
- -des3
- -des3-wrap
- -desx
- -desx-cbc
- -id-aes128-wrap
- -id-aes128-wrap-pad
- -id-aes192-wrap
- -id-aes192-wrap-pad
- -id-aes256-wrap
- -id-aes256-wrap-pad
- -id-smime-alg-CMS3DESwrap
- -idea
- -idea-cbc
- -idea-cfb
- -idea-ecb
- -idea-ofb
- -rc2
- -rc2-128
- -rc2-40
- -rc2-40-cbc
- -rc2-64
- -rc2-64-cbc
- -rc2-cbc
- -rc2-cfb
- -rc2-ecb
- -rc2-ofb
- -rc4
- -rc4-40
- -seed
- -seed-cbc
- -seed-cfb
- -seed-ecb
- -seed-ofb
- -sm4
- -sm4-cbc
- -sm4-cfb
- -sm4-ctr
- -sm4-ecb
- -sm4-ofb
一个简单的示例
openssl enc -in a.txt -out a.txt.enc -e -sm4-ofb -pbkdf2 -salt -rand /dev/random
openssl enc -in a.txt.enc -out a.txt.enc.dec -d -sm4-ofb -pbkdf2
-in
输入文件-out
输出文件-e
进行加密-d
进行解密-sm4-ofb
sm4-ofb加密算法-pbkdf2
pbkdf2密钥派生函数-salt
为密钥派生函数使用盐-rand
从指定来源获取随机数
openssl会要求输入两遍密码,输入的密码,不会在屏幕上显示
为了获取足够的熵产生随机数,可能需要一段时间
在脚本中使用明文口令(不建议)
openssl enc -in a.txt -out a.txt.enc -e -sm4-ofb -pbkdf2 -salt -pass pass:12345
openssl enc -in a.txt.enc -out a.txt.enc.dec -d -sm4-ofb -pbkdf2 -salt -pass pass:12345
openssl enc -in a.txt -out a.txt.enc -e -sm4-ofb -pbkdf2 -salt -k 12345
openssl enc -in a.txt.enc -out a.txt.enc.dec -d -sm4-ofb -pbkdf2 -salt -k 12345
-pass
指定加密口令来源(方法一)-k
指定加密口令(方法二)
大文件性能测试
配置 | 值 |
---|---|
CPU | Intel I5-7200U |
Memory | 16 GB |
Disk | Memory tmpfs |
OS | Ubuntu 18.04.1 |
文件大小:2.4 GB,加密用时: 25 秒,解密用时:25 秒
国密算法支持
1.1.1g版本支持国密算法:SM2 SM3 SM4
openssl ecparam -list_curves | grep "SM"
openssl dgst -list | grep "\-sm"
openssl enc -list | grep "\-sm"