TripleDES暗号化をJavaで動作させようとしています。 Wikipediaの記事 からKeying Options
、オプション1を使用したい場合、All three keys are independent
。
Cipher docs から こちらのリファレンスガイド にアクセスすると書かれていますが、それでもわかりません。
私はサンプルの実行に取り組んでおり、これらの両方の行を異なるプロジェクトで使用しています。
Cipher c = Cipher.getInstance("DESede");
Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding");
どちらも問題なくコンパイルできるので、違いは何ですか?どちらを使用する必要がありますか?これらは両方とも、3つの別々のキーを使用して機能しますか?
「TripleDES」は、Sun JCEプロバイダーの「DESede」の単なるエイリアスです。どちらもまったく同じ暗号を返します。 「DESede」はすべてのJavaプラットフォームで機能する標準的な名前ですが、実際には「TripleDES」もかなり広くサポートされています。
このページ によると、SunJCEトリプルDES実装はオプション#1および#2をサポートしています。
キーサイズは112または168でなければなりません。
キーサイズが112の場合、トリプルDESキーが2つの中間キーで生成され、キーサイズ168の場合、トリプルDESキーが3つの中間キーで生成されます。
意図を明確にするために暗号をインスタンス化するときは、常に動作モードとパディングを指定する必要があります。それ以外の場合、実装は自由に選択でき、混乱を招く可能性があります。