5

RC4 暗号化文字列を生成する php 関数があります。ノードを使用してその文字列をデコードしたいと思います-理想的には組み込みの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を試したときにエラーが発生しました。

ありがとう

4

1 に答える 1

4

理解した

最初に crypto.createDecipheriv を使用する必要があります。それ以外の場合、キーは生ではなく md5 ハッシュされていると思います。

次に、入力エンコーディングをバイナリに設定する必要があります。

3番目-私の場合、ハードコードされた文字列の代わりに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);
于 2012-10-25T01:23:44.630 に答える