Toggle navigation
主页
文章
ChatGPT
在线编程
pygame-ide-online
关于
登录
注册
关注
私信
兜兜
文章
206
评论
12
点赞
98
原创 180
翻译 4
转载 22
文章
关注
粉丝
收藏
个人分类:
默认 (10)
数据库 (10)
网络 (0)
反向代理 (0)
容器 (9)
python (3)
爬虫 (2)
邮件服务器 (6)
C/C++ (1)
SOCKS4/SOCKS5 (0)
JavaScript/JQuery (0)
防火墙/VPN (2)
负载均衡/高可用 (9)
存储 (2)
虚拟机 (0)
分布式 (1)
NOSQL (0)
脚本 (1)
web服务器 (2)
安全 (3)
Linux/Unix (0)
ELK (1)
大数据 (5)
kubernets (19)
prometheus (1)
原创
openssl文件加密以及数字签名的使用
兜兜
2019-02-27 22:59:30
2019-11-14 14:33:50
openssl
数字签名
加密
`简单介绍:` `公钥加密,私钥解密(数据的安全性):发送方使用接收方的公钥加密的密文,仅有接收方的私钥才可解密,保证了数据的安全。(公私钥加解密的对象是对称加密算法的密码文件或钥匙,对称加密算法加密数据文件)` `私钥签名,公钥验签(数据的不可抵赖性/数据的完整性):接收方使用发送方的公钥验证数字签名(发送方通过自己的私钥对数据摘要信息做签名),验证成功,则数据是不可抵赖。接收方对数据内容做摘要信息同发送方的数字签名的摘要信息做对比,摘要信息一致,则数据是完整无篡改的。` ### openssl使用对称加密算法加密大文件 1、使用aes-128-cbc算法加密文件: ```bash $ openssl enc -e -aes-128-cbc -in abc.txt -out enc_abc.txt ``` 2、使用aes-128-cbc算法解密文件: ```bash $ openssl enc -d -aes-128-cbc -in enc_abc.txt -out abc.txt ``` 3、使用aes-128-cbc算法免交互输入密码加密文件: ```bash $ openssl enc -e -aes-128-cbc -in abc.txt -out enc_abc.txt -pass pass:123456 ``` 4、使用aes-128-cbc算法使用密码文件解密文件: ```bash $ echo 123456 > passwd $ openssl enc -d -aes-128-cbc -in enc_abc.txt -out abc.txt -pass file:123456 ``` ``` 对称加密的使用中,-pass本质是采用key和iv向量进行加密的,-pass会转换成key和iv ``` 5、使用aes-128-cbc算法指定IV和KEY进行加密 ```bash $ openssl enc -e -aes-128-cbc -K 12345 -iv f888 -in abc.txt -out enc_abc.txt -p ``` 6、使用aes-128-cbc算法指定IV和KEY进行解密 ```bash $ openssl enc -d -aes-128-cbc -K 12345 -iv f888 -in enc_abc.txt -out abc.txt ``` 7、不加盐值进行加密(默认会加入随机盐值,如果不加入盐值同时密码一样,则每次加密的密文都是一样的) ```bash $ openssl enc -e -aes-128-cbc -nosalt -in abc.txt -out enc_abc.txt -p ``` ``` key=E10ADC3949BA59ABBE56E057F20F883E iv =65B4AD270B3B98098D256AB32F5B8FBA ``` 8、不加盐值进行解密 ```bash $ openssl enc -d -aes-128-cbc -nosalt -in enc_abc.txt -out abc7.txt -p ``` ``` key=81DC9BDB52D04DC20036DBD8313ED055 iv =CC5776D16A1FB6E4AFA34B18395DA656 ``` ### openssl使用非对称加密算法加密小文件 生成私钥 ```bash $ openssl genrsa -out rsa.key 2048 ``` 通过私钥导出公钥 ```bash $ openssl rsa -in rsa.key -pubout -out pub.key ``` 公钥加密文件 ```bash $ openssl rsautl -encrypt -inkey pub.key -pubin -in abc.txt -out abc_rsa.txt ``` 私钥解密文件 ```bash $ openssl rsautl -decrypt -inkey rsa.key -in abc_rsa.txt -out abc_rsa_de.txt ``` ### openssl使用对称加密算法和非对称加密算法加密大文件 `这里以发送方A和接收方B为例` #### 发送方A A.1 生成随机密码文件 ```bash $ openssl rand -hex 64 -out key.bin ``` A.2 使用加密算法aes-256-cbc和密码文件加密大文件 ```bash $ openssl enc -aes-256-cbc -salt -in largefile.pdf -out largefile.pdf.enc -pass file:./bin.key ``` A.3 使用接收方B的公钥加密密码文件 ```bash $ openssl rsautl -encrypt -inkey publickey.pem -pubin -in key.bin -out key.bin.enc ``` A.4 发送方A发送加密文件 largefile.pdf.enc(对称加密文件)和key.bin.enc(非对称加密文件/公钥加密文件)以及加密算法-aes-256-cbc给接收方B ``` A----largefile.pdf.enc---->B A-------key.bin.enc------->B A---aes-256-cbc加密算法---->B ``` #### 接收方B B.1 使用接收方B的私钥解密密码文件 ```bash $ openssl rsautl -decrypt -inkey privatekey.pem -in key.bin.enc -out key.bin ``` B.2 使用解密算法aes-256-cbc以及密码文件解密文件 ```bash $ openssl enc -d -aes-256-cbc -in largefile.pdf.enc -out largefile.pdf -pass file:./bin.key ``` ### openssl使用非对称加密做数字签名(私钥签名,公钥验签) `注意:这里只是说明验签过程,没有对data.txt文件进行加密传送,加密请看上面` #### 发送方A 生成数字签名 ```bash $ openssl dgst -sha256 -sign private.key -out signature data.txt ``` A把文件和数字签名一起发送给B ``` A-----data.txt--->B A--signature----->B ``` #### 接收方B 验证数字签名 ```bash $ openssl dgst -sha256 -verify public.key -signature signature data.txt ``` ``` Verified OK 验签成功 Verification Failure 验签失败 ```
阅读 1429
评论 0
收藏 0
阅读 1429
评论 0
收藏 0
个人信息
账号 : admin
昵称 : 兜兜
文章 : 206 篇
关注 :
勒布朗陈佩
...
斯2
|
海婧忆豚
|
大王山
|
不想差那么
...
一点
|
admin
...
istrator
|
EllJu
...
rb
|
shaji
...
ashenhua
个人网站 :
https://ynotes.cn/blog/user_zone/1
注册时间 : 2018-06-03
热门文章
xvfb+NoVNC实现web运行pygame
邮件服务器之postfix+dovecot+postfixadmin+TLS(一)
k8s部署rook-ceph集群
邮件服务器之日志分析(五)
xterm.js+django-channels实现docker的远程终端
CentOS7搭建LVS负载均衡器
H3C-S5130交换机常用操作
docker-compose编排本博客django+mysql+nginx+uwsgi
最近来访
18753
...
110861
转转
fred_
...
zheng2
不想差那么
...
一点
shaji
...
ashenhua
32325
...
23532
海婧忆豚
大王山