使用 openssl 进行加密和解密

1,162 阅读1分钟

openssl

使用 openssl 进行加密、解密。

加密

openssl 可以读取标准输入(stdin) 或者文件作为输入,接下我们将分别进行演示。

标准输入

读取标准输入,对 123456 使用 aes-256-ecb 算法对其进行加密:

$ echo -n "123456" | openssl enc -aes-256-ecb -e -base64

接下来会交互式要求你输入密码,这个密码是你的密钥,你需要通过这个密钥才能对加密后的 123456 进行解密。假设也使用 123456 作为密钥,输入后你就会得到加密后的密码:

U2FsdGVkX18VygF1rgJjLCxjxjWZ+QK8Ceyxwwgb/Fs=

指定密钥

如果你已经有密钥的话,可以使用 -K 去指定使用已有密钥去加密,需要注意的是密钥格式要求 16 进制格式。

假设已有密钥如下,首先我们使用 xxd 命令将密钥编码为 16 进制格式:

# 编码
$ echo "U2FsdGVkX18Vyg" | xxd -p
# 553246736447566b5831385679670a

# 解码
$ echo "553246736447566b5831385679670a" | xxd -r -p
# U2FsdGVkX18Vyg

然后使用 -K 指定使用已有密钥进行加密,执行后会返回加密后的密码:

$ echo -n "123456" |
  openssl enc -aes-256-ecb -K 553246736447566b5831385679670a -e -base64
# zZd0c2YCfcDhX9w4QyW+nA==

通过变量可以将这两步合并,如下:

$ echo -n "123456" |
  openssl enc -aes-256-ecb -K "$(echo "U2FsdGVkX18Vyg" | xxd -p)" -e -base64
# zZd0c2YCfcDhX9w4QyW+nA==