openssl RSA简单使用

最近看到的关于TLS的文章比较多啊,我也来凑凑热闹,来一篇关于非对称加密用法的博客。当然了,这篇文章对不懂的人也没什么用,懂的人也不会看这篇,还是写给自己看吧 这里的非对称加密用的是RSA

基本

非对称加密密钥的用法主要是如下几种:

1
2
3
4
加密 → 公钥
解密 → 私钥
签名 → 私钥
解密 → 私钥

用法

生成密钥

生成私钥

比如我要生成一个叫pr.pem的私钥文件,直接

1
openssl genrsa -out pr.pem

就可以了,就像这样: 生成私钥

提取公钥

比如我要从pr.pem里提取pu.pem的公钥,直接

1
openssl rsa -pubout -in pr.pem -out pu.pem

即可,可以看到: 提取公钥

小结

至此,公钥和私钥就生成好了,来看看吧!
私钥:
私钥 公钥:
公钥

加解密

加密

我们先创建一个叫test的文件,写点什么 测试文件 接下来加密

1
openssl rsautl -pubin -encrypt -in test -inkey pu.pem -out test_en

来看看加密后的文件:
注:现在用cat是看不了的,只是一堆乱码,所以我用hexdump查看二进制文件 加密后

解密

简单!输入

1
openssl rsautl -decrypt -in test_en -inkey pr.pem -out test_dn

又回来了不是吗!
来看看解密后的文件: 解密后 完全一样!

签名与验证

签名

我想为test文件签名,直接

1
openssl dgst -sha256 -sign pr.pem -out test_sign test

即可生成签名文件test_sign

验证签名

一样,一句命令!

1
openssl dgst -sha256 -verify pu.pem -signature test_sign test

好的,得到一句 验证通过 这就是验证通过了

如果这个原来数据被一些人修改后,比如:
这里我为test文件加了一行 修改后 就会出现: 验证失败

总结

这里我有一些没有说,因为写着写着就写的很详细很长了,具体可以参考这位的博客。

个人总结

其实,我只要记6段代码就好了

1
2
3
4
5
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 已弃用

有问题请在下面问!(至于我会不会……😭)