openssl加解密实战
一、概念
1、加密有两种类型
密钥加密(secret-key encryption)使用相同的密钥进行加密和解密,也叫对称加密
公钥加密(public-key encryption)使用不同的密钥进行加密和解密,也叫非对称加密
密钥加密速度更快,公钥加密更加安全,因为它解决了安全共享密钥的问题
2、公钥加密使用两组密钥,称为密钥对
一个是公钥,用于加密,可以与你想要秘密通信的任何人自由共享、交换;
一个是私钥,用于解密,应该是一个秘密,永远不会共享。
如你想与别人交流敏感文件,可将你的公钥发送给他,他使用公钥加密文件,然后将加密后的文件其发送给你。你解密发件人的加密文件的唯一方法,是使用私钥进行解密。
二、公钥加密/非对称加密
1、生成私钥
#定义私钥文件的名字
export PRIVATE_KEY=liking_private
#定义公钥文件的名字
export PUBLIC_KEY=liking_public
#生成私钥
openssl genrsa -aes128 -out ${PRIVATE_KEY}.pem 1024
2、查看私钥
openssl rsa -in ${PRIVATE_KEY}.pem -noout -text
hexdump -C ./${PRIVATE_KEY}.pem
3、提取公钥
openssl rsa -in ${PRIVATE_KEY}.pem -pubout > ${PUBLIC_KEY}.pem
4、查看公钥
openssl rsa -in ${PUBLIC_KEY}.pem -pubin -text -noout
hexdump -C ./${PUBLIC_KEY}.pem
5、使用公钥加密文件
以下脚本可以对多个文件进行加密:
vim liking_enc.sh
#!/bin/bash
export PRIVATE_KEY=liking_private
export PUBLIC_KEY=liking_public
export FILES="oratopjk oratopts oratopwy oratopzz sqlplusjk sqlplusts sqlpluswy sqlpluszz"
for file in ${FILES}
do
openssl rsautl -encrypt -inkey ${PUBLIC_KEY}.pem -pubin -in ${file} -out ${file}.enc
rm -rf ${file}
done
注1:-inkey指定密钥,默认是私钥,再加-pubin表示指定公钥
注2:rsautl只能对短小的文件进行操作,否则将报"data too large for key size"
hexdump -C ./${file}.enc
6、使用私钥解密文件
以下脚本可以对多个文件进行解密:
vim liking_dec.sh
#!/bin/bash
export PRIVATE_KEY=liking_private
export PUBLIC_KEY=liking_public
export FILES="oratopjk oratopts oratopwy oratopzz sqlplusjk sqlplusts sqlpluswy sqlpluszz"
for file in ${FILES}
do
openssl rsautl -decrypt -inkey ${PRIVATE_KEY}.pem -in ${file}.enc -out ${file}
rm ${file}.enc
done
chmod +x ${FILES}
三、密钥加密/对称加密
1、加密
openssl enc -e -aes-128-ecb -in ${FILE_NAME} -out ${FILE_NAME}.enc -pass pass:passw0rd -p
2、解密
openssl enc -d -aes-128-ecb -in ${FILE_NAME}.enc -out ${FILE_NAME} -pass pass:passw0rd -p
3、批量文件压缩、加解密操作
#压缩并加密一组文件如x、y,生成文件xy
tar cvfz - x y | openssl enc -e -aes-128-ecb -out xy -pass pass:passw0rd
#解压缩并解密文件xy,恢复为源文件x、y
openssl enc -d -aes-128-ecb -in xy -pass pass:passw0rd | tar xvfz -
4、批量文件压缩、加解密操作:【其他参考】
tar cvfz - x y | openssl des3 -salt -k passw0rd -out xy
openssl des3 -d -k passw0rd -salt -in xy | tar xvfz -
四、总结
以上可以看出,在工作中选择加密方式的策略如下:
1、如果追求安全、无痕,则采用非对称加密,自始至终没有明文密码痕迹,但稍显复杂,且以上方法只能加密小文件。
2、如果追求简单、实用,则采用对称加密,一个命令即可实现,但是命令行历史会暴露密码明文。
相关文章
- 「云原生」k8s 中的 hostNetwork 和 NetworkPolicy 讲解与实战操作
- 实战 | 一次从内网到外网,黑盒到白盒的批量挖洞经历qaq
- 实战 | 记一次攻防演练中的溯源经历
- Vue3.0商店后台管理系统项目实战-事件的模板语法
- 微服务架构实战:高可用分布式文件系统的组建FastDFS架构
- php openssl生成证书,php中使用OpenSSL生成证书及加密解密[通俗易懂]
- Android 10 构建系统实战问题解决
- 不吹不黑!阿里新产微服务架构进阶笔记我粉了!理论实战齐飞
- Android App瘦身实战详解手机开发
- 渗透测试工具实战技巧合集
- 学习Linux正则表达式:快速掌握基础知识及实战技能。(linux正则表达式教程)
- Redis开发实战:从入门到精通(redis开发实例)
- 揭秘Redis:多服务器配置实战(redis多服务器配置)
- 转换Oracle 时分秒格式转换实战指南(oracle时分秒格式)
- 安装Linux下的OpenSSL加密库(linux安装openssl)
- 基于Qt的Linux发行版打包实战(qtlinux打包)
- 入门级MySQL视频教程:实战技能免费下载(mysql视频教程 下载)
- Linux下套接字编程实战(套接字 linux)
- 实践Oracle9i参数优化实战提升系统效率(oracle9i参数优化)