在日常开发时总是会遇到涉及加解密的场景,通常简单的字符串加解密我们会直接使用AES对称加密(密钥长度>=128bits)来实现,本文主要讲解如何使用CA证书实现对大文件的加解密。
一、使用CA公钥加密、私钥解密文件
1.生成公私钥对证书文件
首先我们需要一套CA证书公私钥对(私钥ca.key自己保管、公钥ca.crt可公开用于加密):
CA_DN='/CN=YAN DevRootCA/O=YanJingang.com/OU=YAN-CA/countryName=CN/stateOrProvinceName=Beijing/subjectAltName=yanjingang.com'
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca/root/ca.key -out ./ca/root/ca.crt -subj "${CA_DN}"
2.使用公钥加密文件data.tar.gz
openssl smime -encrypt -aes256 -in data.tar.gz -binary -outform DEM -out data.encrypt.tar.gz ./ca/root/ca.crt
3.使用私钥解密文件data.tar.gz
openssl smime -decrypt -inkey ./ca/root/ca.key -in data.encrypt.tar.gz -binary -inform DEM -out data.decrypt.tar.gz
证书的私钥一定要保管好,只要没有私钥就无法解密这个文件。
二、使用密码文件加解密文件
1.生成密码文件
openssl rand -base64 4096 -out ./ca/key.p
2.使用密码文件加密文件
openssl enc -e -aes-256-cbc -in data.tar.gz -out data.encrypt.keyp.tar.gz -pass file:./ca/key.p
3.使用密码文件解密文件
openssl enc -d -aes-256-cbc -in data.encrypt.keyp.tar.gz -out data.decrypt.keyp.tar.gz -pass file:./ca/key.p
同样,密码文件需要保存好。
三、输入密码加密或解密文件
1.输入密码加密
openssl enc -e -aes-256-cbc -in data.tar.gz -out data.encrypt.passwd.tar.gz
2.输入密码解密
openssl enc -d -aes-256-cbc -in data.encrypt.passwd.tar.gz -out data.decrypt.passwd.tar.gz
yan 20.11.27