openssl|openssl 使用混合加密方法,对大文件加解密
使用 openssl背景
RSA 和 AES 分别是经典的非对称加密算法和对称加密算法。但是非对称加密算法并不适合处理大文件,所以大家一般都会采用混合加密的方式,即:
- 生成对称加密算法所需要的对称密码
- 使用对称加密算法加密大文件
- 使用非对称加密算法加密对称密码
加密
- 创建 AES 所需的
key
和iv
,用一个文本文件存储起来 - 使用这个
key
和iv
加密大文件 - 创建 RSA 所需的公私钥对
- 使用 RSA 公钥加密存储
key
和iv
的文本文件 - 将加密后的大文件和加密后的存储
key
和iv
的文本文件放在一起,便于以后解密
- 使用 RSA 私钥解密加密后的存储
key
和iv
的文本文件 - 读取
key
和iv
- 使用 AES 解密大文件
请按实际需要,修改命令中的各个文件名
生成随机十六进制数字
密码:长度 32
openssl rand -hex 32
初始向量 iv:长度 16
openssl rand -hex 16
生成后,写入到一个文本文件中,待之后被 RSA 加密
readonly key=$(openssl rand -hex 32)
readonly iv=$(openssl rand -hex 16)
readonly aes_key_and_iv_file="aes-key-and-iv.txt"{
echo "key=${key}"
echo "iv=${iv}"
} > "${aes_key_and_iv_file}"
AES 加密
记得使用生成的 key 和 iv,替换命令中的 32nums(hexdec) 和 16nums(hexdex)
openssl enc -aes-256-cbc -in example.file -out example.file.enc -base64 -K 32nums(hexdec) -iv 16nums(hexdec)
AES 解密
记得使用密码文件中的 key 和 iv,替换命令中的 32nums(hexdec) 和 16nums(hexdex)
openssl enc -aes-256-cbc -d -in example.file.enc -base64 -out example.file.dec -K 32nums(hexdec) -iv 16nums(hexdec)
创建 RSA 私钥
生成私钥并写入到文件 rsa-private-key.pem,私钥长度为 4096 numbits
openssl genrsa -out rsa-private-key.pem 4096
创建 RSA 公钥
根据私钥 rsa-private-key.pem 生成公钥,并写入到文件 rsa-public-key.pem
openssl rsa -in rsa-private-key.pem -pubout -out rsa-public-key.pem
RSA 加密
使用公钥 rsa-public-key.pem 加密文件 example.file 后生成 example.file.enc
openssl rsautl -encrypt -inkey rsa-public-key.pem -pubin -in example.file -out example.file.enc
RSA 解密
使用私钥 rsa-private-key.pem 解密文件 example.file.enc 为 example.file.dec【openssl|openssl 使用混合加密方法,对大文件加解密】
openssl rsautl -decrypt -inkey rsa-private-key.pem -in example.file.enc > example.file.dec
推荐阅读
- 使用ansible一键安装 k8s
- 如何使用自定义CSS在boostrap中设置容器样式()
- 如何在WordPress中使用bootstrap指定页脚的高度()
- 当用户在WordPress的搜索字段中使用Dot搜索时如何显示零结果
- 阿里云镜像使用阿里巴巴DNS镜像源——DNS配置教程
- 详解 .Net6 Minimal API 的使用方式
- 如何使用WordPress Meta Box保存多文本框
- 如何从WordPress中删除()
- 如何在WordPress中排序类别()
- jeecgboot-vue3笔记(九)——treeSelect树形选择组件的使用(异步加载)