web-dev-qa-db-ja.com

cipher.getInstance()のDESedeとTripleDESの違い

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つの別々のキーを使用して機能しますか?

20
JuiCe

「TripleDES」は、Sun JCEプロバイダーの「DESede」の単なるエイリアスです。どちらもまったく同じ暗号を返します。 「DESede」はすべてのJavaプラットフォームで機能する標準的な名前ですが、実際には「TripleDES」もかなり広くサポートされています。

このページ によると、SunJCEトリプルDES実装はオプション#1および#2をサポートしています。

キーサイズは112または168でなければなりません。

キーサイズが112の場合、トリプルDESキーが2つの中間キーで生成され、キーサイズ168の場合、トリプルDESキーが3つの中間キーで生成されます。

意図を明確にするために暗号をインスタンス化するときは、常に動作モードとパディングを指定する必要があります。それ以外の場合、実装は自由に選択でき、混乱を招く可能性があります。

30
ntoskrnl