Demo - OpenSSL
OpenSSL 是一个开源的加密工具包,用于传输层安全(TLS)和安全套接字层(SSL)协议。
我们可以使用 OpenSSL 来生成 RSA 密钥对,加密解密数据,加签验签数据。
参考官网:OpenSSL
生成密钥
生成 RSA 密钥对,示例:
# 生成私钥
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:1024
# 导出公钥
openssl rsa -pubout -in private_key.pem -out public_key.pem
公钥加密
使用公钥加密数据,示例:
echo "!" > plains.txt
# 加密数据
openssl pkeyutl -encrypt -inkey public_key.pem -pubin -in plains.txt -out cipher.txt
# base64
openssl pkeyutl -encrypt -inkey public_key.pem -pubin -in plains.txt | base64 -w 0 > cipher_base64.txt
注意
当前文档内容中的 加密 和 解密 暂未适配长文本的分块处理。
私钥解密
使用私钥解密数据,示例:
# 解密数据
openssl pkeyutl -decrypt -inkey private_key.pem -in cipher.txt -out plains.txt
# base64
base64 -d cipher_base64.txt | openssl pkeyutl -decrypt -inkey private_key.pem -out plains.txt
私钥加签
使用私钥加签数据,示例:
# 加签数据
openssl dgst -sha256 -sign private_key.pem -out sign.txt cipher_base64.txt
# base64
openssl dgst -sha256 -sign private_key.pem cipher_base64.txt | base64 -w 0 > sign_base64.txt
公钥验签
使用公钥验签数据,示例:
# 验签数据
openssl dgst -sha256 -verify public_key.pem -signature sign.txt cipher_base64.txt
# base64
base64 -d sign_base64.txt > sign.txt && openssl dgst -sha256 -verify public_key.pem -signature sign.txt cipher_base64.txt