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