2012-10-24 12 views
5

私はRC4で暗号化された文字列を生成するphp関数を持っています。私はノードを使用してその文字列をデコードしたいと思っています。理想的には、組み込みのCryptoモジュールを使用しています。しかし、私はそうすることができません - 私は空の文字列を取得します。RC4でNodeJS暗号が空白になる

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の実装でopenssl list-message-digest-algorithmsを使用しているRC4があることを確認しました

私はOSX 10.8、最新のノードです。

私は解読するために別のモジュールを使用しています。私はcryptojsモジュールを試しましたが、動作させる方法を理解していませんでした。私は信じている - - MD5はハッシュ化された代わりの生の使用

おかげ

答えて

4

はそれ以外のキーがある

最初のものはcrypto.createDecipherivを使用する必要があり、それを考え出しました。

第2に、入力エンコーディングmutをバイナリに設定します。

第三に - 私の場合、私はハードコードされた文字列の代わりにPOSTデータを扱っていたと私はそれをurldecodeしていた - は、decodeURIComponent()を窒息jsut - +印を除去しながらでしたが、アンエスケープ()トリック例:

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); 
関連する問題