Bonjour,
je vous expose mon petit (gros) souci :
J'ai une base de données dans laquelle mes MDP utilisateur sont stockés en SHA. Ils sont générés en utilisant
qui vient de la librairie org.apache.commons.codec.digest.DigestUtils; (http://commons.apache.org/codec/apid...gestUtils.html)Code:DigestUtils.shaHex(mdp.getBytes("utf-8"))
Jusque-là, rien de spécial. Le problème vient du fait que j'essaye de créer les utilisateur dans un LDAP et qu'il semble que ce ne soit pas le même SHA qui est utilisé.
Pour faire simple pour le mot de passe testtest, j'ai 51abb9636078defbf888d8457a7c76f85c8f114c en base de données et il faudrait que j'indique au LDAP que le mot de passe est {SHA}Uau5Y2B43vv4iNhFenx2+FyPEUw=.
J'ai trouvé des atrocités dans ce style http://www.openldap.org/faq/data/cache/347.html qui m'ont un peu permis d'y voir un peu plus clair mais au niveau résolution de mon côté je suis totalement paumé.
J'ai testé la conversion de mon MDP en binaire puis l'encodage en Base64. Je n'arrive jamais
Bon, et comme j'ai 40000 utilisateurs actifs, je me voit mal leur remettre tous leur mdp à 0 et changer tout le principe de stockage des mdp en BDD pour résoudre ça.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public majMDP() { Base64.encodeBase64(this.hexPassToBinary().getBytes("utf-8")) } private String hexPassToBinary() { String[]hex={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; String[]binary={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"}; /* Scanner s=new Scanner(System.in); System.out.print("Put hex value : "); String userInput=s.next(); */ String result=""; for(int i=0;i<this.MDP.length();i++) { char temp=this.MDP.charAt(i); String temp2=""+temp+""; for(int j=0;j<hex.length;j++) { if(temp2.equalsIgnoreCase(hex[j])) { result=result+binary[j]; } } } return result; }
Donc, si quelqu'un à un début d'idée ou de résolution pour ceci, ce serait super hyper über sympa.
Merci beaucoup