在Linux下使用openssl为文件加密

自渡
2024-10-17 / 0 评论 / 12 阅读

在服务器的日常使用中,经常需要迁移或者备份大量数据,如果是大型网站的话,会涉及到很多用户信息,我们在备份的时候,可以使用openssl为备份数据加密,进一步保障数据的安全。
openssllinux下默认是已经安装好的,它的功能非常强大,支持多种算法。

aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       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      base64            
bf                bf-cbc            bf-cfb            bf-ecb            
bf-ofb            camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  
camellia-192-ecb  camellia-256-cbc  camellia-256-ecb  cast              
cast-cbc          cast5-cbc         cast5-cfb         cast5-ecb         
cast5-ofb         des               des-cbc           des-cfb           
des-ecb           des-ede           des-ede-cbc       des-ede-cfb       
des-ede-ofb       des-ede3          des-ede3-cbc      des-ede3-cfb      
des-ede3-ofb      des-ofb           des3              desx              
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           
rc2-cfb           rc2-ecb           rc2-ofb           rc4               
rc4-40            seed              seed-cbc          seed-cfb          
seed-ecb          seed-ofb          sm4-cbc           sm4-cfb           
sm4-ctr           sm4-ecb           sm4-ofb  

我们可以使用AES-256-CBC的算法来对文件backup.sql加密
命令中,-aes256代表加密方式,-e代表进行加密操作,如果是-d则代表解密操作,-in是原始文件,-out是操作后的输出文件。

openssl enc -e -aes256 -in backup.sql -out backup.aes 
#在交互式命令行中输入密码即可(密码不会显示在命令行)
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

对已加密的文件进行解密

openssl enc -d -aes256 -in backup.aes -out backup.sql
enter aes-256-cbc decryption password:

该命令默认是采用交互式进行,如果你想编写为脚本并设置密钥自动化运行,可以加上-k参数自动完成

#加密,密钥设为123456
openssl enc -e -aes256 -in backup.sql -out backup.aes -k 123456
#解密
openssl enc -d -aes256 -in backup.aes -out backup.sql -k 123456

不同版本openssl的加解密

  • OpenSSL的高版本加密的文件有时无法使用低版本进行解密,这主要归因于不同版本间加密方式的差异,特别是默认摘要算法的改变。
  • 在OpenSSL 1.1.0及之后的版本中,默认的摘要算法已经从MD5更改为SHA-256。这一变更是为了提高安全性,因为MD5算法已被认为存在安全风险。因此,当使用1.1.0或更高版本进行加密时,如果未明确指定使用MD5摘要,那么加密过程中将采用SHA-256。
  • 然而,OpenSSL 1.0.2及更低版本的默认摘要算法仍为MD5。这意味着,如果使用这些低版本尝试解密由高版本使用SHA-256摘要加密的文件,将会出现不兼容的情况,导致解密失败。
  • 为了解决这个问题,可以在使用高版本OpenSSL进行加密时,通过指定-md md5选项来明确使用MD5摘要算法。这样,加密生成的文件就可以被低版本的OpenSSL正常解密。例如:
# 使用OpenSSL 1.1.0或更高版本进行加密,并指定使用MD5摘要
openssl enc -d -aes-256-cfb -in backup.aes -out backup.sql -k 123456 -md md5

# 也可以指定使用SHA-256摘要算法
openssl enc -d -aes-256-cfb -in backup.aes -out backup.sql -k 123456 -md sha256
0

评论 (0)

取消