如何加密和解密数据而不暴露密钥与客户端使用套接字.Io、nodejs和vanilla js?



我正在制作一个web聊天应用程序,我应该加密和解密客户端的消息,或者我应该依赖tcl,如果我应该加密,那么我怎么能做到这一点,而不暴露任何客户端

我正在使用nodejs, socket。io和普通JavaScript。我正在寻找一些代码样本。

这里最常见的解决方案是使用公钥加密的非对称加密,其中您与客户端共享服务器的公钥,客户端与您共享它的公钥。私钥不共享。客户端使用服务器的公钥加密数据,服务器使用其私钥解密数据。当以另一种方式发送数据时,反之亦然。这是一个麻烦,完全在Javascript中实现自己的安全,很容易犯错误,引入漏洞。

但是,幸运的是,你不需要这样做,因为如果你只使用https作为套接字的传输。io连接,那么所有的公钥加密就完全为你完成了(在https使用的TLS实现中),你不仅有一个完全加密的端到端通道来发送你的消息,而且你也有域欺骗保护,因为浏览器会验证服务器证书是否与正在使用的URL匹配。

所以,只需创建您的套接字。