OpenSSL之对称加密算法命令详解(3)

指定密码的输入方式,共有五种方式:命令行输入(stdin)、文件输入(file)、环境变量输入(var)、文件描述符输入(fd)、标准输入(stdin)。默认是标准输入,及从键盘输入。

[e/d]

e:加密, d:解密  默认是加密

[-a/-base64]

由于文件加密后是二进制形式,不方便查看,使用该参数可以使加密后的内容经过base64编码,使其可读;同样,解密时需要先进行base64解编码,然后进行解密操作。

[-k/-kfile]

兼容以前版本,指定密码输入方式,现已被pass参数取代

[md]

指定密钥生成的摘要算法,用户输入的口令不能直接作为文件加密的密钥,而是经过摘要算法做转换,此参数指定摘要算法,默认md5

[-S]

为了增强安全性,在把用户密码转换成加密密钥的时候需要使用盐值,默认盐值随机生成。使用该参数,则盐值由用户指定。也可指用-nosalt指定不使用盐值,但降低了安全性,不推荐使用。

[K/IV]

默认文件的加密密钥的Key和IV值是有用户输入的密码经过转化生成的,但也可以由用户自己指定Key/IV值,此时pass参数不起作用

[pP]

加上p参数会打印文件密钥Key和IV值,加上P参数也会打印文件密钥Key和IV值,但不进行真正的加解密操作

[bufsize]

读写文件的I/O缓存,一般不需要指定

[-nopad]

不使用补齐,这就需要输入的数据长度是使用加密算法的分组大小的倍数

[engine]

指定三方加密设备,没有环境,暂不实验

3、对称加密算法使用示例

1、只对文件进行base64编码,而不使用加解密

/*对文件进行base64编码*/
openssl enc -base64 -in plain.txt -out base64.txt
/*对base64格式文件进行解密操作*/
openssl enc -base64 -d -in base64.txt -out plain2.txt
/*使用diff命令查看可知解码前后明文一样*/
diff plain.txt plain2.txt

2、不同方式的密码输入方式

/*命令行输入,密码123456*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass pass:123456
/*文件输入,密码123456*/
echo 123456 > passwd.txt
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass file:passwd.txt
/*环境变量输入,密码123456*/
passwd=123456
export passwd
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass env:passwd
/*从文件描述输入*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass fd:1 
/*从标准输入输入*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass stdin

3、固定salt值加密

linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass pass:123456 -P
salt=32F5C360F21FC12D
key=D7E1499A578490DF940D99CAE2E29EB1
iv =78EEB538897CAF045F807A97F3CFF498
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass pass:123456 -P
salt=DAA482697BECAB46
key=9FF8A41E4AC011FA84032F14B5B88BAE
iv =202E38A43573F752CCD294EB8A0583E7
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass pass:123456 -P -S 123
salt=1230000000000000
key=50E1723DC328D98F133E321FC2908B78
iv =1528E9AD498FF118AB7ECB3025AD0DC6
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass pass:123456 -P -S 123
salt=1230000000000000
key=50E1723DC328D98F133E321FC2908B78
iv =1528E9AD498FF118AB7ECB3025AD0DC6
linuxidc@linuxidc:~$

可以看到,不使用-S参数,salt参数随机生成,key和iv值也不断变化,当slat值固定时,key和iv值也是固定的。

4、加解密后过程使用base64编解码

/*使用-a参数加密后使用base64编码*/
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -a -out encrypt.txt -pass pass:123456
/*使用-a参数解密前使用base64解码*/
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in encrypt.txt -d -a -out plain1.txt -pass pass:123456
/*文件一样*/
linuxidc@linuxidc:~$ diff plain.txt plain1.txt
/*加密后文件使用了base64编码*/
linuxidc@linuxidc:~$ cat encrypt.txt
U2FsdGVkX19KbCj9GMI1TBOQjP8JJcefIUH1tHwf/Z4=

5、手动指定Key和IV值

/*手动指定key和iv值,salt固定*/
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt  -K 1223 -iv f123 -p
salt=0B00000000000000
key=12230000000000000000000000000000
iv =F1230000000000000000000000000000
/*指定pass密码,不起作用,注意Key和IV值是16进制*/
linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt  -K 1223 -iv f123 -p -pass pass:123456
salt=F502F4B8DE62E0E5
key=12230000000000000000000000000000
iv =F1230000000000000000000000000000

更多OpenSSL相关内容可以查看以下的有用链接: 

使用 OpenSSL 命令行构建 CA 及证书 

Ubuntu安装OpenSSL 

通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输

Linux下使用OpenSSL生成证书

利用OpenSSL签署多域名证书

在OpenSSL中添加自定义加密算法 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15383.html