作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,使用 pidgin otr,我能够与任何人进行通信并且它是安全的。
我们没有交换 key 或其他任何东西,程序只是设置了加密,每个人都向我保证它是安全的。
所以我所拥有的是:
Person1 与 Person2 交谈(假设人们真的是他们所说的人)
由于 person1 和 person2 之间从未交换过任何信息,如何阻止 badperson3 拦截所有流量并解密所有消息?
我阅读了 PGP,了解每台机器如何拥有在两台计算机之间共享的私钥和公钥,但我不完全了解它是如何工作的。不像 person2 可以使用 person1 的私钥对消息进行编码,如果它使用公钥,任何人都可以解密。
我有点困惑。
最佳答案
在不涉及技术细节的情况下,像 RSA 这样的公钥加密的整个想法是,公钥可用于加密数据,但不能用于解密刚刚加密的内容(当然,在不破坏加密的情况下 - 在这种情况下RSA,通常意味着分解两个大素数的乘积)。
当然,仍然有一些数据交换:您仍然需要获得一个人的公钥,然后才能使用该公钥加密数据。还值得注意的是,公钥加密通常比对称加密慢很多。在这种情况下,大多数使用公钥加密的协议(protocol)都试图尽量减少使用公钥算法加密的数据量。通常,发送者会选择一个大小合适的随机数作为对称算法的 key ,用公钥算法对其进行加密,然后将其发送给接收者。其余数据使用该 key 通过对称算法进行加密。
因此,在典型情况下,您要检索公钥,然后生成、加密和发送私钥,然后发送使用该私钥加密的数据。
关于security - 两方加密如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164341/
我是一名优秀的程序员,十分优秀!