使用RC4的NodeJS Crypto产生空白

我有一个生成RC4encryptionstring的PHP函数。 我想用Node解码这个string – 最好是使用内置的Crypto模块。 但我无法这样做 – 我只是得到一个空白的string。

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实现有RC4使用openssl list-message-digest-algorithms

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

我打开使用另一个模块解密 – 我试过cryptojs模块,但没有弄清楚如何使其工作 – 当我尝试RC4给了我错误。

谢谢

弄清楚了

首先必须使用crypto.createDecipheriv否则关键是 – 我相信 – MD5散列,而不是使用原始的。

其次,input编码mut被设置为二进制。

第三 – 在我的情况下,我正在处理POST数据,而不是一个硬编码的string,我不得不urlDEcode它 – decodeURIComponent()jsut呛 – 但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);