Javascript 带有RC4的NodeJS加密产生空白

Javascript 带有RC4的NodeJS加密产生空白,javascript,node.js,cryptojs,rc4-cipher,node-crypto,Javascript,Node.js,Cryptojs,Rc4 Cipher,Node Crypto,我有一个生成RC4加密字符串的php函数。我想使用Node来解码这个字符串——理想情况下使用内置的加密模块。但我不能这样做-我只是得到一个空白字符串 PHP代码在这里 我的JS代码是 crypto = require('crypto'); decipher = crypto.createDecipher("rc4", "MY SECRET KEY"); text = "HELLO"; decrypted = decipher.update(text, "utf8", "hex"); decryp

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

PHP代码在这里

我的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列表消息摘要算法检查了我的OpenSSL实现是否具有RC4

我在OSX 10.8上,是最新的节点

我愿意使用另一个模块来解密-我尝试了cryptojs模块,但没有找到如何使其工作-在尝试RC4时给了我错误

谢谢

想明白了

首先,必须使用crypto.createDecipheriv,否则,我相信密钥是md5散列的,而不是原始的

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

第三,在我的例子中,我处理的是POST数据,而不是硬编码字符串,我必须对其进行URDECODE-DECODECURIComponent()jsut CHOCKED-但移除+符号的unescape()实现了以下技巧:

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);