jasypt / petit soucis d'encryption sha / openldap

jasypt / petit soucis d'encryption sha / openldap - Java - Programmation

Marsh Posté le 02-09-2010 à 14:19:58    

Sous-cat Java parce que c'est le langage utilisé, mais bon ...
 
Voilà, jusqu'il y pas longtemps, j'utilisais une classe bêtement copiée de http://www.koders.com/java/fidA192 [...] s=SHA2#L21 pour créer des users sur mon ldap; ça marche pas mal, mais ça m'emmerde de copier cette classe dans multiple projets, donc au lieu de faire ma propre lib, je suis tombé sur Jasypt (merci Souk), qui devrait faire l'affaire.
 
Sur mon openLdap, les userPassword sont encodés sour la forme: {SSHA}bdNbIw+tw5wbT8ibln3Zn01j0BvnrLr/u9DGxw==
 
Avec ce bout de code:  

Code :
  1. ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
  2.         passwordEncryptor.setAlgorithm("SHA-1" );
  3.         passwordEncryptor.setPlainDigest(true);


... j'obtiens "eeJHX4GmMXJ2v3y7OViyDSibeN8="; que je préfixe cette chaine avec "{SSHA}" ou pas, mon user peut pas s'identifier sur l'ldap; j'ai essayé deux/trois trucs sans trop piger ce que je faisais... manifestement j'y connais rien en cryptruc, donc si quelqu'un pouvait m'éclairer ou aurait une idée/piste ...  
 
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 14:19:58   

Reply

Marsh Posté le 02-09-2010 à 14:23:50    

Le problème vient du fait que tu obtiennes eeJHX4GmMXJ2v3y7OViyDSibeN8=, ça devrait être eeJHX4GmMXJ1v3y7OViyDSibeN8=
:/


---------------
I'm failing as fast as I can !! -- Vision-360, vos photos en grand format -- !! -- Les nouilles c'est bon
Reply

Marsh Posté le 02-09-2010 à 14:26:05    

apparemment SSHA c'est du SHA-1 avec du sel (salt) donc là il te manque le sel :/
http://en.wikipedia.org/wiki/Salt_%28cryptography%29

 

apperement la doc de ta lib en parle:
http://www.jasypt.org/howtoencryptuserpasswords.html
il faudrait peut être fouiller par là


Message édité par sligor le 02-09-2010 à 14:28:40

---------------
qwerty-fr
Reply

Marsh Posté le 02-09-2010 à 14:29:58    

je vais essayer de piger cette page ouais.. mais je pensais que justement le PasswordEncryptor s'en chargeait ...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 14:30:06    

a priori sans salt c'est {SHA} et pas {SSHA}


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 02-09-2010 à 14:39:25    

R3g a écrit :

a priori sans salt c'est {SHA} et pas {SSHA}


ha merde, bien vu, si je vire un s, je peux me logger [:dawa]. Reste à trouver comment saler mon jasypt.
(je pensais qu'il l'était vu que la version cryptée change a chaque execution)

Message cité 1 fois
Message édité par the real moins moins le 02-09-2010 à 14:42:19

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 14:42:09    

the real moins moins a écrit :


ha merde, bien vu, si je vire un s, je peux me logger :dawa:. Reste à trouver comment saler mon jasypt.
(je pensais qu'il l'était vu que la version cryptée change a chaque execution)


Je crois comprendre qu'il suffit de mettre passwordEncryptor.setPlainDigest(false); au lieu de true, mais j'ai lu en diagonale.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 02-09-2010 à 14:44:20    

rah merde oui, j'avais remis cette option à true, et la version cryptée était la meme à chaque fois; ça, et {SHA}, et je peux me logger;
 
Par contre avec setPlainDigest à false et {SSHA}, ça marche po :O


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 14:50:36    

the real moins moins a écrit :

rah merde oui, j'avais remis cette option à true, et la version cryptée était la meme à chaque fois; ça, et {SHA}, et je peux me logger;
 
Par contre avec setPlainDigest à false et {SSHA}, ça marche po :O


Apparemment avec l'option à false il ajoute un salt et fait plusieurs iterations de la fonction de hash. Il faudrait que tu le forces à ne faire qu'une iteration, je pense qu'il faut utiliser setConfig() : http://www.jasypt.org/api/jasypt/a [...] tions(int)


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 02-09-2010 à 14:56:16    

R3g a écrit :


Apparemment avec l'option à false il ajoute un salt et fait plusieurs iterations de la fonction de hash. Il faudrait que tu le forces à ne faire qu'une iteration, je pense qu'il faut utiliser setConfig() : http://www.jasypt.org/api/jasypt/a [...] tions(int)


nope, essayé ça aussi:

Code :
  1. final ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
  2.         passwordEncryptor.setAlgorithm("SHA" );
  3.         passwordEncryptor.setPlainDigest(false);
  4.         final SimpleStringDigesterConfig config = new SimpleStringDigesterConfig()
  5.         config.setIterations(1)
  6.         passwordEncryptor.setConfig(config)
  7.         final String encryptedPassword = passwordEncryptor.encryptPassword(clearPassword);
  8.         return '{SSHA}' + encryptedPassword


 
 
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
:/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 14:56:16   

Reply

Marsh Posté le 02-09-2010 à 14:58:54    

the real moins moins a écrit :


nope, essayé ça aussi:

Code :
  1. final ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
  2.         passwordEncryptor.setAlgorithm("SHA" );
  3.         passwordEncryptor.setPlainDigest(false);
  4.         final SimpleStringDigesterConfig config = new SimpleStringDigesterConfig()
  5.         config.setIterations(1)
  6.         passwordEncryptor.setConfig(config)
  7.         final String encryptedPassword = passwordEncryptor.encryptPassword(clearPassword);
  8.         return '{SSHA}' + encryptedPassword


 
 
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
:/


essayes avec setIterations(0), juste pour voir ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 02-09-2010 à 15:01:23    

Caught: java.lang.IllegalArgumentException: Number of iterations must be greater than zero
:D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 15:02:15    

bon ben du coup je sais pas :(


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 02-09-2010 à 15:22:16    

je vais finir par recopier la classe-toute-moche-mais-qui-marche et jeter jasypt :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-09-2010 à 16:53:43    

Il semblerait que le soucis soit qu'openldap attende le salt à la fin de la chaine cryptée, et que jasypt le mette au début ... http://old.nabble.com/Bug-in-org.j [...] 21332.html


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed