Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.7.4. 加密和解密文件

对于使用 OpenSSL 加密(和解密)文件,可以使用 pkeyutl 或enc-in 命令。使用 pkeyutl 时,RSA 密钥用于执行加密和解密,而使用对称算法时,会使用对称算法

使用 RSA 密钥

要加密名为 plaintext 的文件,请按如下所示发出命令:
~]$ openssl pkeyutl -in plaintext -out cyphertext -inkey privkey.pem
密钥和证书的默认格式是 PEM。如果需要,使用 -keyform DER 选项来指定 DER 密钥格式。
要指定加密引擎,请按如下所示使用 -engine 选项:
~]$ openssl pkeyutl -in plaintext -out cyphertext -inkey privkey.pem -engine id
其中 id 是加密引擎的 ID。要检查引擎的可用性,请运行以下命令:
~]$ openssl engine -t
要为名为 plaintext 的数据文件签名,请按如下所示发出命令:
~]$ openssl pkeyutl -sign -in plaintext -out sigtext -inkey privkey.pem
要验证签名的数据文件并提取数据,请使用以下命令:
~]$ openssl pkeyutl -verifyrecover -in sig -inkey key.pem
要验证签名,例如使用 DSA 密钥,请按如下方式发出命令:
~]$ openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem
pkeyutl(1) 手册页描述了公钥算法工具。

使用对称算法

要列出可用的对称加密算法,请使用不支持的选项执行enc 命令,如 -l
~]$ openssl enc -l
若要指定算法,可使用其名称作为选项。例如,要使用 aes-128-cbc 算法,请使用以下语法:
openssl enc -aes-128-cbc
要使用 aes-128-cbc 算法加密名为 明文 的文件,请输入以下命令:
~]$ openssl enc -aes-128-cbc -in plaintext -out plaintext.aes-128-cbc
要解密上例中获取的文件,请使用 -d 选项,如下例所示:
~]$ openssl enc -aes-128-cbc -d -in plaintext.aes-128-cbc -out plaintext
重要
The enc 命令不能正确支持 AEAD 密码,并且 ecb 模式被视为不安全。要获得最佳结果,请不要使用 cbc、cfb、sb 或 c tr 之外的其他模式。