Разница между DESede и TripleDES для cipher.getInstance()

Я пытаюсь получить шифрование TripleDES, работающее на Java. Из статьи в Википедии в разделе Keying Options я хочу использовать опцию 1, где All three keys are independent.

В Cipher docs говорится, что в справочном руководстве , но мне все еще не ясно.

Я работаю над запуском примеров и использую обе эти строки в разных проектах:

Cipher c = Cipher.getInstance("DESede");

Cipher cipher = Cipher.getInstance("TripleDES/ECB/PKCS5Padding");

Оба компилируются отлично, так какая разница? Должен ли я использовать один над другим? У обоих из них работают три отдельных ключа?

Ответ 1

"TripleDES" - это просто псевдоним для "DESede" в поставщике Sun JCE - оба возвращают тот же самый шифр. "DESede" - это стандартное имя, которое должно работать на каждой платформе Java, но на практике "TripleDES", вероятно, довольно широко поддерживается.

Согласно этой странице, реализация SunJCE Triple DES поддерживает опции # 1 и # 2:

Ключ должен быть равен 112 или 168.

Ключ от 112 будет генерировать тройной ключ DES с двумя промежуточными клавишами, а клавиша 168 будет генерировать ключ Triple DES с 3 промежуточными клавишами.

Вы должны всегда указывать режим работы и отступы при создании экземпляра шифрования, чтобы сделать ваши намерения четкими. В противном случае реализация может сделать выбор, который может сбить с толку.