带有RC4的NodeJS加密产生空白

时间:2012-10-24 22:44:13

标签: javascript node.js cryptojs rc4-cipher node-crypto

我有一个生成RC4加密字符串的php函数。我想使用Node解码该字符串 - 理想情况下使用内置的Crypto模块。但我无法这样做 - 我只是得到一个空白字符串。

PHP代码在http://code.google.com/p/rc4crypt/

我的JS代码是

crypto = require('crypto');
decipher = crypto.createDecipher("rc4", "MY SECRET KEY");
text = "HELLO";
decrypted = decipher.update(text, "utf8", "hex");
decrypted += decipher.final("hex");
console.log(decrypted);

我没有得到任何输出。我已经使用openssl list-message-digest-algorithms

检查了我的OpenSSL实现是否有RC4

我在最新节点OSX 10.8上。

我愿意使用另一个模块进行解密 - 我尝试了cryptojs模块,但没有弄清楚如何让它工作 - 当我尝试RC4时给了我错误。

由于

1 个答案:

答案 0 :(得分:4)

想出来

首先必须使用crypto.createDecipheriv,否则密钥是 - 我相信 - md5哈希而不是使用raw。

其次,输入编码mut设置为二进制。

第三 - 在我的情况下,我正在处理POST数据而不是硬编码字符串,我不得不对其进行urldecode - decodeURIComponent()jsut choked - 但删除了+符号的unescape()做了诀窍ex:

var text = unescape((response.post.myvar + '').replace(/\+/g, '%20'))

var crypto = require('crypto');
decipher = crypto.createDecipheriv("rc4", key, '');    
decrypted = decipher.update(text, "binary", "utf8");
decrypted += decipher.final("utf8");
console.log(decrypted);