我正在使用 nodejs 服务器,并且我使用加密节点模块成功加密/解密(使用 IV 和密钥)Base64 中的 json。
但是,当我将带有 AES 128 CTR json 的发送操作发送到 Web 客户端时,我正确收到了带有 base64 数据加密的 json,但是我的问题是我不想解密它。
在 CryptoJS 文档中,我找到了一个这样的例子:
var text = "Hello world";
var key = CryptoJS.enc.Base64.parse("myKey");
var iv = CryptoJS.enc.Base64.parse("myIv");
var encrypted = CryptoJS.AES.encrypt(text, key, {iv: iv});
console.log(encrypted); // print something like that s {init: function, $super: s, ciphertext: l.WordArray.t.extend.init, key: s, iv: s…}
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {iv: iv});
console.log(decrypted.toString(CryptoJS.enc.Utf8)); // print Hello world
Run Code Online (Sandbox Code Playgroud)
我们可以轻松解密“Hello world”,因为它是由我的 Web 客户端中的 CryptoJS 加密的。但我的问题是我想解密不使用 CryptoJS 加密系统的数据。
我想做这样的事情:
var …Run Code Online (Sandbox Code Playgroud) 我在debian 8 VM上使用openssl创建了SSL证书.所以我有一个PEM文件,其中包含我的密钥和我的证书.
我想知道是否可以使用没有https,express等的SSL证书,只需使用具有套接字IO(服务器端)和套接字IO客户端(客户端)的体系结构.
服务器端 :
var fs = require("fs")
, options = {
key : fs.readFileSync('./test/apache.pem'),
cert : fs.readFileSync('./test/apache.pem')
}
var io = require('socket.io').listen(45621, options)
io.sockets.on("connection", function(socket) {
console.log("socket " + socket.id + " connected !")
})
Run Code Online (Sandbox Code Playgroud)
客户端:(我使用的是简单的html客户端)
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="socket-io-1-2-1.js"></script>
<script>
var socket = io.connect('https://localhost:45621', {secure: true})
socket.on("connect", function() { alert("we are connected to socket io!") })
</script>
Run Code Online (Sandbox Code Playgroud)
当我运行我的客户端页面时,我会自动收到关闭连接.(网:: ERR_CONNECTION_CLOSED)
如果我删除服务器端的SSL选项并更改我的客户端连接,它可以工作:
io.connect("http://localhost:45621")
Run Code Online (Sandbox Code Playgroud)
但交流不安全?
编辑:是不是重复这个,因为我不希望使用HTTP,HTTPS,通过createServer方法表达.我只使用socket io.