Javascript 如何使用socket.io、nodejs和vanilla js在客户端加密和解密数据而不公开密钥?

Javascript 如何使用socket.io、nodejs和vanilla js在客户端加密和解密数据而不公开密钥?,javascript,node.js,encryption,socket.io,Javascript,Node.js,Encryption,Socket.io,我正在制作一个网络聊天应用程序,我应该加密和解密客户端上的消息,还是应该依赖tcl?如果我应该加密和解密,那么我如何在不暴露客户端上任何内容的情况下做到这一点 我正在使用nodejs、socket.io和vanilla javascript帮助我获取一些代码示例,感谢您抽出宝贵的时间这里最常见的解决方案是使用公钥加密的非对称加密,即您与客户端共享服务器的公钥,客户端与您共享公钥。私钥不共享。客户端使用服务器的公钥加密数据,服务器使用其私钥解密。反之亦然,当以另一种方式发送数据时。要完全用Java

我正在制作一个网络聊天应用程序,我应该加密和解密客户端上的消息,还是应该依赖tcl?如果我应该加密和解密,那么我如何在不暴露客户端上任何内容的情况下做到这一点


我正在使用nodejs、socket.io和vanilla javascript帮助我获取一些代码示例,感谢您抽出宝贵的时间

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

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


那么,只需通过https建立socket.io连接,就完成了。

使用WebSocket。然后可以使用SSL对其进行加密。