/ 暗号化と解読のためにCBCモードでブローフィッシュを使用するが、IVをどのように進めるのか? - java、暗号化、暗号化

暗号化と解読のためにCBCモードでブローフィッシュを使用するが、IVをどのように進めるか? - java、暗号化、暗号化

私はパスワードを追加/編集するためのUIを持っています。これらのパスワードはCBCモードでBlowfishを使用して暗号化されていますが、正常に機能しましたが、復号化中にIVが必要でした

私は暗号を開始している間に暗号クラスを使用していましたので、これは暗号化中にIVを処理していました。

だから私の疑いは、

  1. IVが暗号化と解読?私はいくつかのページで復号化中に私たちが間違ったIVを使うと最初のブロックは間違っているかもしれませんが残りのブロックは正しいでしょう。これについて説明できますか?

  2. IV(同じIVを使用する暗号化と復号化の場合)は、単純なオブジェクトとして保存するか、いくつかの区切り文字を使用してパスワードとともに暗号化する必要がありますか?どちらが安全でしょうか?

前もって感謝します。

回答:

回答№1は2
  1. はい、IVは暗号化/復号化で同じにする必要があります。 CBCでは、正しくリコールすれば、エラーがブロックをカスケードします。間違ったIVを使うとメッセージ全体が間違ってしまう。
  2. IVは平文で保存することができます。暗号化しようとすると、IVを暗号化するために使用されたIVを保存する必要があります。

しかし、パスワードを暗号化された形式で保存することは、一般的には悪い習慣と考えられています。誰かがデータベースを取得する場合、すべてのパスワードを取得するために1つのキーを見つける必要があります。

パスワードを保存するための推奨される方法は、プレーンハッシュまたはhmac関数に基づく、PBKDF(パスワードベースのキー導出関数)としても知られるハッシュ関数。を参照してください OWASPパスワード保存のチートシート.

これにはJavaのプリミティブがあります このページの例。 (パスワードハッシュアルゴリズムを使用して検索し、javaの実装にスクロールします)。