Bonjour
je cherche à insérer dans un annuaire openldap un mot de passe (pour un subscriber ) crypter avec l'algorithme triple DES. La clé de cryptage est le mot de passe du user qui essaie de faire l'insertion dans le ldap. C'est un user qui a les droits nécessaires pour faire cette opération.
Le mot de passe du user est plus ou moins imposé.
En utilisant ce code j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 byte[] encryptPassword = null; byte[] rawkey = "userPwd".getBytes(); DESedeKeySpec keyspec = new DESedeKeySpec(rawkey); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("DESede"); SecretKey key = keyfactory.generateSecret(keyspec); Cipher cipher = Cipher.getInstance("desede"); cipher.init(Cipher.ENCRYPT_MODE, key); encryptPassword = cipher.doFinal(password.getBytes());
En regardant la javadoc je vois que la clé doit faire 24 bytes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 java.security.InvalidKeyException: Wrong key size at javax.crypto.spec.DESedeKeySpec.<init>(DashoA13*..) at javax.crypto.spec.DESedeKeySpec.<init>(DashoA13*..) at test.TestTripleDES.readKey(TestTripleDES.java:155)
j'ai essaye de completer ce tableau rawKey avec des zeros mais en faisant comme ceci le LDAP me retourne l'erreur "Attribute password is invalid"
Ma question est la suivante :
Existe-il une regle pour remplir le tableau de byte ?
merci d'avance
PS: l'API utilisée est JLDAP
Partager