最近看到的关于TLS的文章比较多啊,我也来凑凑热闹,来一篇关于非对称加密用法的博客。当然了,这篇文章对不懂的人也没什么用,懂的人也不会看这篇,还是写给自己看吧
这里的非对称加密用的是RSA
基本
非对称加密密钥的用法主要是如下几种:
加密 → 公钥
解密 → 私钥
签名 → 私钥
解密 → 私钥
用法
生成密钥
生成私钥
比如我要生成一个叫pr.pem
的私钥文件,直接
openssl genrsa -out pr.pem
就可以了,就像这样:
提取公钥
比如我要从pr.pem
里提取pu.pem
的公钥,直接
openssl rsa -pubout -in pr.pem -out pu.pem
即可,可以看到:
小结
至此,公钥和私钥就生成好了,来看看吧!
私钥:
公钥:
加解密
加密
我们先创建一个叫test
的文件,写点什么
接下来加密
openssl rsautl -pubin -encrypt -in test -inkey pu.pem -out test_en
来看看加密后的文件:
注:现在用cat
是看不了的,只是一堆乱码,所以我用hexdump
查看二进制文件
解密
简单!输入
openssl rsautl -decrypt -in test_en -inkey pr.pem -out test_dn
又回来了不是吗!
来看看解密后的文件:
完全一样!
签名与验证
签名
我想为test
文件签名,直接
openssl dgst -sha256 -sign pr.pem -out test_sign test
即可生成签名文件test_sign
验证签名
一样,一句命令!
openssl dgst -sha256 -verify pu.pem -signature test_sign test
好的,得到一句
这就是验证通过了
如果这个原来数据被一些人修改后,比如:
这里我为test
文件加了一行
就会出现:
总结
这里我有一些没有说,因为写着写着就写的很详细很长了,具体可以参考 这位 的博客。
个人总结
其实,我只要记6段代码就好了
openssl genrsa -out pr.pem //生成
openssl rsa -pubout -in pr.pem -out pu.pem //提取
openssl rsautl -pubin -encrypt -in test -inkey pu.pem -out test_en //加密
openssl rsautl -decrypt -in test_en -inkey pr.pem -out test_dn //解密
openssl dgst -sha256 -sign pr.pem -out test_sign test //签名
openssl dgst -sha256 -verify pu.pem -signature test_sign test //验证
其它
- 这里的密钥对不会在任何地方使用!
博主的正式公钥:地址: https://mega.nz/#!sM4GDIxY 密钥:已弃用!0bW3hOti7GQHtkXYgXY52o8IK9RZVos7hzdZV8fA4uc
有问题请在下面问!(至于我会不会……😭)