乐趣区

关于openssl:openssl-使用混合加密方法对大文件加解密

应用 openssl

背景

RSA 和 AES 别离是经典的 非对称加密算法 对称加密算法 。然而 非对称加密算法 并不适宜解决大文件,所以大家个别都会采纳 混合加密 的形式,即:

  1. 生成 对称加密算法 所须要的 对称明码
  2. 应用 对称加密算法 加密大文件
  3. 应用 非对称加密算法 加密 对称明码

办法

加密

  1. 创立 AES 所需的 keyiv,用一个文本文件存储起来
  2. 应用这个 keyiv 加密 大文件
  3. 创立 RSA 所需的公私钥对
  4. 应用 RSA 公钥加密 存储 keyiv 的文本文件
  5. 加密后的大文件 加密后的存储 keyiv 的文本文件 放在一起,便于当前解密

解密

  1. 应用 RSA 私钥解密 加密后的存储 keyiv 的文本文件
  2. 读取 keyiv
  3. 应用 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.encexample.file.dec

openssl rsautl -decrypt -inkey rsa-private-key.pem -in example.file.enc > example.file.dec

退出移动版