本文介绍了如何使用非对称加密来实现信息安全领域中热点话题-数字签名
什么是非对称加密
非对称加密算法需要两个密钥:publickey和privatekey。如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
- 公钥:可以公开的密钥
- 私钥:需要妥善保管的密钥,知道人越少越好
- 数据的机密性只能单方向保证
- 加密效率低
什么是数字签名
将数字签名理解为附加到消息或文档中的代码。在生成数字签名之后,其可以作为证明消息从发送方到接收方的传输过程中没有被篡改的证据。
签名的生成
- 有原始数据对其进行哈希运算-> 散列值
- 使用非对称加密的私钥对散列值加密 -> 签名
- 将原始数据和签名一并发送给对方
签名的验证
- 接受数据原始数据数字签名
- 数字签名,需要使用公钥解密,得到散列值
- 对原始数据进行hash运算,得到新的散列值
- 散列值进行比对
go实现Rsa数字签名
使用rsa生成密钥对
- 生成密钥对
- 序列化
- 保存到磁盘文件
![a3b82599612e7c098be62b459a584984.png](https://i-blog.csdnimg.cn/blog_migrate/9775037e4ccf2a248aa3b22dbcff7c28.jpeg)
![0ab871af73c7c147e3f665677080f89f.png](https://i-blog.csdnimg.cn/blog_migrate/f20c23a02f2c743e4ec1cbe8d8bad9fb.jpeg)
使用私钥对数字签名
![51e33916a7644324a96ddad13cb2a77e.png](https://i-blog.csdnimg.cn/blog_migrate/21b8a965930f47e019d297fed1ead9a6.jpeg)
使用公钥进行签名认证
![448f0923c542b7c3528d13aa93481252.png](https://i-blog.csdnimg.cn/blog_migrate/0716c1e7a0ee42fb58a1ab2c02d7420c.jpeg)
结果展示
![e82f8976256f55a08adc16c90b3c51bb.png](https://i-blog.csdnimg.cn/blog_migrate/b7dd64885531d317881a7bea68978712.jpeg)
GitHub https://github.com/potaxie/go-crypto
Wechatpotaxie
什么是非对称加密
非对称加密算法需要两个密钥:publickey和privatekey。如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
- 公钥:可以公开的密钥
- 私钥:需要妥善保管的密钥,知道人越少越好
- 数据的机密性只能单方向保证
- 加密效率低
什么是数字签名
将数字签名理解为附加到消息或文档中的代码。在生成数字签名之后,其可以作为证明消息从发送方到接收方的传输过程中没有被篡改的证据。
签名的生成
- 有原始数据对其进行哈希运算-> 散列值
- 使用非对称加密的私钥对散列值加密 -> 签名
- 将原始数据和签名一并发送给对方
签名的验证
- 接受数据原始数据数字签名
- 数字签名,需要使用公钥解密,得到散列值
- 对原始数据进行hash运算,得到新的散列值
- 散列值进行比对
go实现Rsa数字签名
使用rsa生成密钥对
- 生成密钥对
- 序列化
- 保存到磁盘文件
![a3b82599612e7c098be62b459a584984.png](https://i-blog.csdnimg.cn/blog_migrate/9775037e4ccf2a248aa3b22dbcff7c28.jpeg)
![0ab871af73c7c147e3f665677080f89f.png](https://i-blog.csdnimg.cn/blog_migrate/f20c23a02f2c743e4ec1cbe8d8bad9fb.jpeg)
使用私钥对数字签名
![51e33916a7644324a96ddad13cb2a77e.png](https://i-blog.csdnimg.cn/blog_migrate/21b8a965930f47e019d297fed1ead9a6.jpeg)
使用公钥进行签名认证
![448f0923c542b7c3528d13aa93481252.png](https://i-blog.csdnimg.cn/blog_migrate/0716c1e7a0ee42fb58a1ab2c02d7420c.jpeg)
结果展示
![e82f8976256f55a08adc16c90b3c51bb.png](https://i-blog.csdnimg.cn/blog_migrate/b7dd64885531d317881a7bea68978712.jpeg)
GitHub https://github.com/potaxie/go-crypto