2017-12-03 9 views
0

私は質問をした私のサーバで問題が発生しました - はAES-256暗号化が確実に一貫していますか?AES-256の暗号化は一貫していますか?

したがって、私のノードサーバーは、ユーザーデータを匿名で保持しながらDDOSの脆弱性を回避し、要求からIPを取り出し、暗号化し、過去24時間以内に要求を行った回数を格納します。

最後に24時間以内にユーザーがを要求したかどうかをチェックします。同じパスワードを使用してのIPを再暗号化します。その後、それを取ってと最初に一致したと一致します。

しかし、その後は:

Error: Can't find data: /ipcount/d00c526612cec9e5d3e201af35993c75. Stopped at ipcount 

d00c526612cec9e5d3e201af35993c75は暗号化された文字列でなければなりませんが、それは前にそれを見たことがないているようにデータベースが動作しています。同じパスワードで一貫して暗号化できるのですか?

ありがとうございます。ここで

は、Node.jsのdocumentation for cryptoを1として

const crypto = require('crypto'), 
    algorithm = 'aes-256-ctr', 
    password = 'aSecureNotSharedOverAForumPassword' 

function encrypt(text){ 
    var cipher = crypto.createCipher(algorithm,password) 
    var crypted = cipher.update(text,'utf8','hex') 
    crypted += cipher.final('hex'); 
    return crypted; 
} 
+0

「try ... catch」をキャッチしてエラーを追加しましたが、うまくいきました...しかし、私はまだ答えが必要です – jasonidris

+0

AES暗号化は同じ入力、モードなどで一貫しています。便利である。一貫性のない使用では、一貫性のない結果が生成されます。 – zaph

+1

これを暗号化すると、簡単に解読することができるため、匿名にすることはできません。 bcryptのようなものがより適切かもしれません。 –

答えて

1

...暗号化関数である:

開発者が独自の使用crypto.pbkdf2上のキーとIVを導出することをお勧めします()を使用し、crypto.createCipheriv()を使用してCipherオブジェクトを作成します。

したがって、発生している動作は、まったく定義された動作ではありません。それ自体では、カウンタモード(CTR、GCM、CCMなど)の暗号を使用しないでください。私の推測では、基礎となる暗号オブジェクトは、あなたのCTRモードのためにノンスをランダムに生成しているので、出力は毎回異なります。

この問題を解決するには、ドキュメントの推奨に従ってcrypto.createCipherivを使用し、ナンスを自分で生成してください。この方法で、ナンスを保存して、同じ出力ストリームを生成することができます。

+0

ありがとう、私が言ったように、私は自分のパスワードでtry catchで変数を設定しようとしました。 – jasonidris

関連する問題