跳到主要内容

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