Java 如何手动加密套接字连接的通信量?

Java 如何手动加密套接字连接的通信量?,java,networking,aes,nio,encryption,Java,Networking,Aes,Nio,Encryption,我想手动加密套接字上来回的字节,换句话说,我想自己在客户端和服务器上进行加密和解密。以安全的方式交换pub/priv密钥的过程是什么?我非常想做HTTPS在浏览器级别、套接字级别上所做的事情,但我想自己做,而不是使用已经为我做了这件事的SSLSocket。我想了解并学习在高级SSLSocket课程中理所当然地将其视为理所当然的做法 谢谢 哇!从这里的评论来看,做一个SSH隧道并忘掉它可能更好,对吧?Holy s**t!你想实施吗?这需要一些时间。基本上,您将使用同步密钥加密,而不是公私密钥。使

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

谢谢



哇!从这里的评论来看,做一个SSH隧道并忘掉它可能更好,对吧?

Holy s**t!你想实施吗?这需要一些时间。基本上,您将使用同步密钥加密,而不是公私密钥。使用数学,您可以在不安全的连接上交换密钥。然后,一旦交换了密钥,就可以使用它来加密数据

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

你要做的事情大约需要一周时间,至少需要2-3个类文件。仅供参考,它可能会有错误,并且在加密方面不安全


另请参见

这很难用几句话来解释。只要看看RFC2246及其后续版本就可以了解这一事实。如果您想了解关键点,请尝试实现RSA。对于完全安全的加密层,您需要的还有更多,但RSA描述了通过不安全通道进行安全密钥交换的一种可能性。有一个类可以实现这一点:它完全独立于您发送/接收数据的方式,并且可以实现完全SSL。密钥交换:不交换私钥;只有公共的。这正是公钥密码系统的定义。实际上,使用内置的java加密库并不难。有一些函数可以用来创建公钥/私钥和对称密钥,并用它们进行加密/解密。我想我是在装傻。我所要做的就是给任何想和我的服务器通话的人一个公钥。然后他们可以使用标准和简单的java加密工具进行加密,我会用我的私钥解密。小菜一碟还是我忘了什么?:)(上一次我尝试使用BouncyCastle时,它非常容易使用)听起来好像你想自己实现它而不使用库,可能是一种学习体验。但是是的,如果你使用库,那就容易多了。下面是一个使用库的示例:下面是另一个Java示例:@JohnPristine下定决心。你在问题中说你想做HTTPS做的事,即SSL做的事。它不仅仅像你现在说的那样做公钥加密。一英里也没有。写2-3个班级档案需要一周的时间吗?