web-dev-qa-db-fra.com

Différence entre DESede et TripleDES pour cipher.getInstance ()

J'essaie de faire fonctionner le cryptage TripleDES en Java. Extrait de article Wikipedia sous Keying Options, Je veux utiliser l'option 1, où All three keys are independent.

D'après le Documents chiffrés il est dit d'aller au guide de référence ici , mais ce n'est toujours pas clair pour moi.

Je travaille à obtenir des exemples et j'utilise ces deux lignes dans différents projets:

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

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

Les deux compilent bien, alors quelle est la différence? Dois-je utiliser l'un sur l'autre? Ces deux méthodes fonctionnent-elles pour utiliser trois clés distinctes?

20
JuiCe

"TripleDES" est simplement un alias pour "DESede" dans le fournisseur Sun JCE - les deux renvoient exactement le même chiffre. "DESede" est le nom standard qui devrait fonctionner sur chaque Java, mais dans la pratique, "TripleDES" est probablement assez largement pris en charge également.

Selon cette page , l'implémentation SunJCE Triple DES prend en charge les options # 1 et # 2:

La taille de la clé doit être égale à 112 ou 168.

Une taille de clé de 112 générera une clé Triple DES avec 2 clés intermédiaires, et une taille de clé de 168 générera une clé Triple DES avec 3 clés intermédiaires).

Vous devez toujours spécifier le mode de fonctionnement et le remplissage lors de l'instanciation d'un chiffre pour clarifier vos intentions. Sinon, l'implémentation est libre de faire le choix, ce qui peut prêter à confusion.

30
ntoskrnl