您当前的位置: 首页 >  ssl

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SSL基础:7:对称加密算法在加密和解密中的使用

发布时间:2019-12-10 19:47:16 ,浏览量:0

在这里插入图片描述 这篇文章将通过具体的使用示例,介绍如何使用对称加密算法来对文件进行加密和解密操作。

场景说明: 在前一篇文章中介绍了签名的方式:https://liumiaocn.blog.csdn.net/article/details/103457878。在文章中提到了如何使用公钥和签名文件进行签名的验证,由于上篇文章的签名验证方式只用到了签名文件和公钥,而一同发送的另外一个文件messages则没有使用,如果签名文件在中途被修改了,使用者使用公钥进行签名验证时会提示验证无法通过。但是messages文件没有被修改则没有保证,这篇文章继续介绍一下保证messages文件在传输过程中不被修改的方法。

加密解密流程

加密解密的一般流程如下所示:

文件加密
文件传输
文件解密
openssl支持的对称加密算法

openssl enc -ciphers下可以列出所支持的对称加密算法的列表

[root@liumiaocn sign]# openssl version
OpenSSL 1.1.1d  10 Sep 2019
[root@liumiaocn sign]# openssl enc -ciphers
Supported ciphers:
-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1             
-aes-128-cfb8              -aes-128-ctr               -aes-128-ecb              
-aes-128-ofb               -aes-192-cbc               -aes-192-cfb              
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr              
-aes-192-ecb               -aes-192-ofb               -aes-256-cbc              
-aes-256-cfb               -aes-256-cfb1              -aes-256-cfb8             
-aes-256-ctr               -aes-256-ecb               -aes-256-ofb              
-aes128                    -aes128-wrap               -aes192                   
-aes192-wrap               -aes256                    -aes256-wrap              
-aria-128-cbc              -aria-128-cfb              -aria-128-cfb1            
-aria-128-cfb8             -aria-128-ctr              -aria-128-ecb             
-aria-128-ofb              -aria-192-cbc              -aria-192-cfb             
-aria-192-cfb1             -aria-192-cfb8             -aria-192-ctr             
-aria-192-ecb              -aria-192-ofb              -aria-256-cbc             
-aria-256-cfb              -aria-256-cfb1             -aria-256-cfb8            
-aria-256-ctr              -aria-256-ecb              -aria-256-ofb             
-aria128                   -aria192                   -aria256                  
-bf                        -bf-cbc                    -bf-cfb                   
-bf-ecb                    -bf-ofb                    -blowfish                 
-camellia-128-cbc          -camellia-128-cfb          -camellia-128-cfb1        
-camellia-128-cfb8         -camellia-128-ctr          -camellia-128-ecb         
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb         
-camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ctr         
-camellia-192-ecb          -camellia-192-ofb          -camellia-256-cbc         
-camellia-256-cfb          -camellia-256-cfb1         -camellia-256-cfb8        
-camellia-256-ctr          -camellia-256-ecb          -camellia-256-ofb         
-camellia128               -camellia192               -camellia256              
-cast                      -cast-cbc                  -cast5-cbc                
-cast5-cfb                 -cast5-ecb                 -cast5-ofb                
-chacha20                  -des                       -des-cbc                  
-des-cfb                   -des-cfb1                  -des-cfb8                 
-des-ecb                   -des-ede                   -des-ede-cbc              
-des-ede-cfb               -des-ede-ecb               -des-ede-ofb              
-des-ede3                  -des-ede3-cbc              -des-ede3-cfb             
-des-ede3-cfb1             -des-ede3-cfb8             -des-ede3-ecb             
-des-ede3-ofb              -des-ofb                   -des3                     
-des3-wrap                 -desx                      -desx-cbc                 
-id-aes128-wrap            -id-aes128-wrap-pad        -id-aes192-wrap           
-id-aes192-wrap-pad        -id-aes256-wrap            -id-aes256-wrap-pad       
-id-smime-alg-CMS3DESwrap  -idea                      -idea-cbc                 
-idea-cfb                  -idea-ecb                  -idea-ofb                 
-rc2                       -rc2-128                   -rc2-40                   
-rc2-40-cbc                -rc2-64                    -rc2-64-cbc               
-rc2-cbc                   -rc2-cfb                   -rc2-ecb                  
-rc2-ofb                   -rc4                       -rc4-40                   
-seed                      -seed-cbc                  -seed-cfb                 
-seed-ecb                  -seed-ofb                  -sm4                      
-sm4-cbc                   -sm4-cfb                   -sm4-ctr                  
-sm4-ecb                   -sm4-ofb                   
[root@liumiaocn sign]#
使用示例

无论是DES还是AES系列算法都是传统的对称加密算法,这里以-des为例进行文件加密和解密的说明。

事前准备

将messages文件和签名文件放在一起打包,生成messages.tar.gz文件。

[root@liumiaocn sign]# tar czvf messages.tar.gz messages messages.sign 
messages
messages.sign
[root@liumiaocn sign]# ls 
messages  messages.sign  messages.tar.gz  rsa_key.private  rsa_key.public
[root@liumiaocn sign]#
文件加密

使用openssl enc可以指定加密算法对文件进行加密,生成新的加密文件。

[root@liumiaocn sign]# openssl enc -des -in messages.tar.gz -out enc_messages.tar.gz -pass pass:liumiaocn -pbkdf2
[root@liumiaocn sign]# ls -l *.tar.gz
-rw-r--r--. 1 root root 512 Dec  9 06:13 enc_messages.tar.gz
-rw-r--r--. 1 root root 493 Dec  9 06:13 messages.tar.gz
[root@liumiaocn sign]#

实际上新生成的文件enc_messages.tar.gz已经是加密过的了,已经不直接是一个tar.gz格式的文件了,需要解密之后才能使用。

[root@liumiaocn sign]# tar tvf messages.tar.gz 
-rw-r--r-- root/root        37 2019-12-09 01:07 messages
-rw-r--r-- root/root       256 2019-12-09 01:08 messages.sign
[root@liumiaocn sign]# 
[root@liumiaocn sign]# tar tvf enc_messages.tar.gz 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[root@liumiaocn sign]# 
[root@liumiaocn sign]#
文件解密

文件解密通过-d选项指定解密操作,同时可结合-out指定输出文件,需要注意的是,务必与加密过程中使用的其他参数都保持一致。比如本文反向解密生成解压的文件,执行示例如下所示:

[root@liumiaocn sign]# openssl enc -d -des -in enc_messages.tar.gz -pass pass:liumiaocn -out dec_messages.tar.gz -pbkdf2
[root@liumiaocn sign]# ls -l *.tar.gz
-rw-r--r--. 1 root root 493 Dec  9 06:18 dec_messages.tar.gz
-rw-r--r--. 1 root root 512 Dec  9 06:13 enc_messages.tar.gz
-rw-r--r--. 1 root root 493 Dec  9 06:13 messages.tar.gz
[root@liumiaocn sign]#

此时再确认解密后的文件,已经可以正常打开使用了

[root@liumiaocn sign]# tar tvf dec_messages.tar.gz 
-rw-r--r-- root/root        37 2019-12-09 01:07 messages
-rw-r--r-- root/root       256 2019-12-09 01:08 messages.sign
[root@liumiaocn sign]#
总结

对称加密算法,加密解密用一把钥匙,在命令使用的时候也能很清楚地看到明文保存的密码(liiumiaocn)的使用过程,这篇文章虽然以des为例进行了说明,其他openssl所支持的算法使用起来也几乎一致。

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.7334s