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

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

Из документов по шифру говорится, что нужно перейти к справочное руководство здесь, но мне все равно непонятно.

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

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

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

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


person JuiCe    schedule 24.06.2013    source источник


Ответы (1)


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

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

Размер ключа должен быть равен 112 или 168.

Размер ключа 112 сгенерирует ключ Triple DES с 2 промежуточными ключами, а размер ключа 168 сгенерирует ключ Triple DES с 3 промежуточными ключами.

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

person ntoskrnl    schedule 24.06.2013
comment
DESede — это описательное имя для реализации 3DES: DESede = DES-Encrypt-Decrypt-Encrypt = Triple DES - person Bonewolf; 27.08.2018