[英]Network Encryption with OpenSSL / AES explained
我对此很陌生,所以我遵循了一些教程,并在 C++ 中为客户端 - 服务器之间使用公钥和私钥的数据包制作了一个加密/解密示例。
结果很有希望,工作也很好,但我很困惑,真的很困惑,我不能犯错误(尤其是在商业环境中)。
请向我解释我应该如何使用加密/解密,目前我有:
我需要了解并知道哪个是正确的方法用法,这是我的理解(请不要笑):
**
**
所以我的问题如下:
非常感谢
您想了解非对称加密(公钥加密)。 基本上来说,每一方都会生成一对密钥 - (私钥和公钥,以某种方式相关)。
了解 OpenSSL 与 ssl 证书有关,您必须了解这一点才能使用 ssl。 尝试阅读: 为初学者解释的 SSL。
它与服务器-客户端没有必然关系。
例如,您有一对钥匙。
然后,你的公钥发送给你的朋友,朋友用你给他的公钥加密数据并发送给你。
现在,您可以使用您的私钥解锁(解密)加密的数据。
您可以在以下资源中了解这一重要主题:
密码学很复杂,您应该在使用它们之前完全理解这些协议,尤其是在商业环境中。 所以Ofer Arial是对的,有必要进一步阅读。
但是你问的是好事,因为你的例子实际上是错误的。 这里是更正的版本:
我使用 A 和 B 而不是服务器和客户端,因为这同样适用于任何类型的连接:服务器-客户端、客户端-客户端、服务器-服务器。
概述显示服务器和客户端都有自己的密钥对。 一般情况下,发送方总是使用接收方的公钥加密,接收方使用自己的私钥解密。
你的版本有什么问题? 好吧,每个拥有公钥的人都可以读取发送到客户端的流量,因此加密没有意义。
除了加密之外,连接还需要身份验证,因此每一方都知道(加密的)消息实际上来自正确的人。 所以密钥对也用于认证:
使用相同的密钥对进行加密和认证:
现在,A 和 B 如何获得公钥,他们如何确保获得正确的公钥? 要么您亲自见面并互相传递,要么使用可信赖方的证书。
这只是一个简短的答案,但如前所述,进一步阅读是必要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.