java - 如何手动加密套接字连接的流量?

标签 java networking aes nio encryption

我想手动加密套接字上来回的字节,换句话说,我想在客户端和服务器中自己进行加密和解密。以安全方式交换 pub/priv key 的程序是什么?我非常想做 HTTPS 在浏览器级别、套接字级别所做的事情,但我想自己做,而不是使用已经为我做这件事的 SSLSocket。我想理解和学习,而不是在高级 SSLSocket 类中将其视为理所当然。

谢谢!

<小时/>

哇!从这里的评论来看,最好做一个 SSH 隧道然后忘记它,对吗?

最佳答案

天啊!您想要实现 Diffie-Hellman Key Exchange ?这需要一些时间。基本上,您将使用同步 key 加密,而不是公钥-私钥。使用数学,您可以通过不安全的连接交换 key 。然后,一旦交换了该 key ,您就可以使用它来加密您的数据。

如果您想使用public key cryptography ,那么您实际上并没有交换 key 。服务器和客户端都有公钥和私钥(总共 4 个 key )。您可以自由地广播公钥,但私钥保持私密。这也需要一些时间。

您要做的事情大约需要一周时间,至少需要 2-3 个类文件。仅供引用,它可能会出现错误并且不具有加密安全性。 Cryptography is hard .

另请参阅Determining a Private Key (Diffie-Hellman)

关于java - 如何手动加密套接字连接的流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692425/

相关文章:

java - 在 Android Studio 中将图像保存到图库中时出错

java - 客户端无权以此发件人身份发送 |适用于 JavaMail API 1.4,但不适用于 1.4.7

c# - SmoApplication.EnumAvailableSqlServers 不检索本地服务器实例

Linux:数据包重新排序模拟

javascript - CryptoJS 密码、盐和 iv 不重要吗?

java - 模型类对象列表中的数据未正确检索?

java - Spring Rest RequestMethod.GET 返回 400 Bad Request for @RequestParam required=true 丢失时

networking - 基于流的路由和openflow

c# - Rijndael 填充错误

Android加密/解密问题(AES)