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é.


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 utilisant ce code j'ai l'erreur suivante :

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)
En regardant la javadoc je vois que la clé doit faire 24 bytes.

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