命令行工具openssl支持丰富的加密算法,对于日常的加密学习和工作非常方便
安装
linux
debian/ubuntu
sudo apt install openssl
centos
sudo yum install openssl
Macos
brew install openssl
Macos上通常默认已经安装了一个LibreSSL ,所以默认会使用这个版本,但是由于该版本功能不全,可以通过openssl version 查看,如果是的话,需要在当前用户环境变量中覆盖一下,以使用刚才安装的版本:
echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> .bash_profile
source .bash_profile
openssl version
命令参数使用简要
openssl help
查看某个命令的参数详情: openssl command -help 例如,查看命令 enc 的参数细节
openssl enc -help
SHA256摘要
echo 'Hello World' | openssl dgst -sha256
RSA 非对称加密
生成密匙对
生成私匙
openssl genpkey -algorithm RSA -out privatekey.pem -pkeyopt rsa_keygen_bits:1024
生成公匙
openssl rsa -pubout -in privatekey.pem -out publickey.pem
查看私匙和公匙的细节
openssl rsa -text -in privatekey.pem
openssl pkey -in publickey.pem -pubin -text
加密
echo test_data > message.txt
openssl rsautl -encrypt -inkey publickey.pem -pubin -in message.txt -out message.rsa
或者也可以结合为一条命令
echo testdata | openssl rsautl -encrypt -inkey publickey.pem -pubin -in message.txt -out message.rsa
这样加密后的文件内容
解密
openssl rsautl -decrypt -inkey privatekey.pem -in message.rsa -out message.dec
签名
生成签名
openssl dgst -sha256 -sign privatekey.pem -out signature.bin message.txt
签名验证
openssl dgst -sha256 -verify publickey.pem -signature signature.bin message.txt
AES对称加密
这里以AES-256-CBC为例
加密
echo abc_test > test.txt
openssl enc -aes-256-cbc -in test.txt -out test.encry -pbkdf2
或者使用管道符合并为一条命令
echo abc_test | openssl enc -aes-256-cbc -in test.txt -out test.encry -pbkdf2
#如果要将加密后内容base64编码加一个 -a 参数
echo abc_test | openssl enc -aes-256-cbc -in test.txt -a -out test.encry -pbkdf2
解密
openssl enc -aes-256-cbc -d -in test.encry -pbkdf2
#如果加密内容经过base64编码加一个 -a 参数
openssl enc -aes-256-cbc -d -in test.encry -a -pbkdf2
注意:in参数可以不指定通过标准输入传入,out可以不指定输出文件会输出到标准输出