OpenSSL之十:对称加密算法指令

对称加密算法指令

  • enc指令格式
  • enc指令参数
  • 对称加密指令实例

运行openssl,使用help命令可以查看当前版本支持的命令:
OpenSSL之十:对称加密算法指令_第1张图片

enc指令格式

enc指令是OpenSSL中对称加密的集大成者,OpenSSL的对称加密算法指令都集成在enc一个指令中。enc通过指令参数指定对应的对称短发类型。例如:

OpenSSL> enc -des-cbc -pbkdf2 -in pln.txt -out enc.txt -pass pass:123456

也可以使用独立的指令方式:

OpenSSL> des-cbc -pbkdf2 -in pln.txt -out enc.txt -pass pass:123456

这两种形式是等价的。

enc指令参数

OpenSSL之十:对称加密算法指令_第2张图片

  • ciphers:支持的加密类型列表
    OpenSSL之十:对称加密算法指令_第3张图片
  • in和out:指令输入和输出文件。对于加密运算,输入明文,输出密文。对于解密运算,输入密文,输出明文。
  • pass、k和kfile:口令输入选项。
  • e和d:加密和解密操作。默认为加密操作。
  • base64、a和A:a和base64的作用相同,都可以对文件进行base64编解码。对于加密操作来说,数据加密之后进行base64编码;对于解密操作来说,数据解密前进行base64解码。A选项只有和a和base64一起使用才会生效。使用A参数时,程序将所有加密数据作为一行进行base64编码,而不按照原文件的换行格式。当文件或数据过大时,A可能导致指令执行失败。
  • K和IV:K选项后面是16进制形式加密密钥,长度不超过64个字符;IV选项后面是16进制形式初始向量,长度不超过32个字符。若不提供这两个参数,程序将自己生成相应的密钥或初始向量。
  • salt、nosalt和S:跟口令输入选项一起使用时生效。salt选项指明在从口令提取密钥的过程中使用盐值,这可以增强被加密数据的安全性。nosalt选项则告诉指令在密钥提取过程中不使用盐值。默认不提供salt选项时是使用盐值的。S可以指定自定义的盐值,后面连接十六进制的编码数据即可,长度不能超过16个字符。
  • engine:该选项参数是OpenSSL支持的Engine的名称,一般以字符串表示。可以使用engine -t来获取目前OpenSSL支持的Engine特征字符串。
    OpenSSL之十:对称加密算法指令_第4张图片
  • p和P:p选项打印出对称加密算法正使用的加密密钥和初始向量,输出的格式是十六进制的形式。如果使用了P选项,则程序在打印出加密密钥和初始向量后就立即退出,而不执行真正的加密或解密操作。
  • nopad:不使用默认的PKCS#5补位填充方式,如果选用此参数,需要确保在块加密算法中输入的数据是加密块长度的整数倍.
  • bufsize:该选项指定了读写文件的I/O缓存,指定的数字以字节位单位。若指定的缓存小于80个字节,程序会自动增加为80个字节。
- bufsise 256
- bufsize 8k
  • debug:使用debug选项后,OpenSSL的对称加密算法指令将会整个执行过程I/O操作相关的BIO列出来。
  • pbkdf2:使用pbkdf2派生密钥。
  • md:从指定短语的摘要创建密钥。
  • rand:将指定文件加载到随机数生成器中。

对称加密指令实例

  1. 内容复制,不进行加密:
OpenSSL> enc -none -in pln.txt -out enc.txt

OpenSSL之十:对称加密算法指令_第5张图片
2. BASE64编码

OpenSSL> enc -base64 -in pln.txt -out enc.txt
#或
OpenSSL> enc -a -in pln.txt -out enc.txt
#或
OpenSSL> base64 -in pln.txt -out enc.txt

OpenSSL之十:对称加密算法指令_第6张图片
3. BASE64解码

OpenSSL> enc -base64 -d -in enc.txt -out pln.txt
#或
OpenSSL> enc -a -d -in enc.txt -out pln.txt
#或
OpenSSL> base64 -d -in enc.txt -out pln.txt

OpenSSL之十:对称加密算法指令_第7张图片
4. 加密

OpenSSL> enc -des-ede3-cbc -pbkdf2 -pass pass:12345678 -in pln.txt -out enc.txt
#或
OpenSSL> des-ede3-cbc -pbkdf2 -pass pass:12345678 -in pln.txt -out enc.txt

OpenSSL之十:对称加密算法指令_第8张图片
5. 解密

OpenSSL> enc -des-ede3-cbc -d -pbkdf2 -pass pass:12345678 -in enc.txt -out pln.txt
#或
OpenSSL> des-ede3-cbc -d -pbkdf2 -pass pass:12345678 -in enc.txt -out pln.txt

OpenSSL之十:对称加密算法指令_第9张图片
6. 加解密+BASE64
(1)加密

OpenSSL> enc -des-ede3-cbc -base64 -pbkdf2 -pass pass:12345678 -in pln.txt -out enc.txt

OpenSSL之十:对称加密算法指令_第10张图片
(2)解密

enc -des-ede3-cbc -d -base64 -pbkdf2 -pass pass:12345678 -in enc.txt -out pln.txt

OpenSSL之十:对称加密算法指令_第11张图片
7. 使用加密密钥和初始向量

OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -K 010D8F7ABC8FE7FF -iv 07DF7DEABC09BACF

OpenSSL之十:对称加密算法指令_第12张图片
8. 通过口令提取密钥和初始变量

OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -pbkdf2 -pass pass:12345678

OpenSSL之十:对称加密算法指令_第13张图片
9. 提示终端输入口令提取密钥和初始变量

OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -pbkdf2 -pass stdin

OpenSSL之十:对称加密算法指令_第14张图片

  1. 从文件输入密码
OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -pbkdf2 -pass file:pass.txt

OpenSSL之十:对称加密算法指令_第15张图片
11. 盐值

# 不使用盐值
OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -pbkdf2 -pass pass:12345678 -nosalt
# 指定盐值
OpenSSL> enc -des-cbc -in pln.txt -out enc.txt -pbkdf2 -pass pass:12345678 -S ABD87A6F990D236D

你可能感兴趣的:(OpenSSL,网络安全,openssl,网络安全)