我写了一个数据加密工具,它可以在mac os上运行,但不能在ubuntu上运行。 以下代码显示了差异。nodejs cipher ubuntu没有按预期工作
var crypto = require('crypto');
var k = '123456789';
var v = '123456789';
var alg = 'AES-128-CBC';
var buf = new Buffer('Hello world!');
console.log(buf);
var cipher = crypto.createCipheriv(alg, k, v);
var result = cipher.update(buf);
result += cipher.final();
buf = new Buffer(result, 'binary');
console.log(buf);
var decipher = crypto.createDecipheriv(alg, k, v);
decipher.setAutoPadding(auto_padding=false);
result = decipher.update(buf);
result += decipher.final();
buf = new Buffer(result, 'binary');
console.log(buf);
console.log(buf.toString());
输出,在Mac上:
<Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64 21>
<Buffer 17 0e 2d 73 94 bf d4 24 95 b3 a7 49 73 58 5e 3f>
<Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 04 04 04 04>
Hello world!
Ubuntu的:
<Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64 21>
<Buffer 17 0e 2d 73 fd fd fd 24 fd fd fd 49 73 58 5e 3f>
<Buffer 05 6d 69 fd fd 1b 49 62 60 39 fd 68 fd fd fd>
mi��Ib`9�h���
什么想法? thx
我不能在ubuntu中重现。我运行的Ubuntu 12.04,节点0.8,一切都很好。你的系统设置是什么? – matehat 2013-03-12 15:37:50
我可以在Debian上使用节点0.10.0在i386和x86_64平台上重现它。这听起来像它可能是一个过时的OpenSSL库(我的机器都不是最新的)。 – robertklep 2013-03-12 15:43:22
上次我检查了crypto API页面,它是3 - 表,但现在页面读取稳定性:2 - 不稳定。所以你应该使用节点0.8或等到它们稳定。 – user568109 2013-03-12 17:06:10