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 34 35 36 37 38 39 40 41 42 43 44 45 46
| PROCEDURE Test()
res est un booléen
res = CheckLdap("123456", "{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=")
Trace(res ? "Ok"SINON "Pas ok")
res = CheckLdap("123456", "{SSHA}FDuZM0ewCRbH2opD8vExzIdsETbcfRpFE9d1RA==")
Trace(res ? "Ok"SINON "Pas ok")
PROCEDURE CheckSHA(password est une chaîne, ldapSign est une chaîne) : booléen
calcSign est une chaîne = CalcSha(password)
RENVOYER calcSign = "{SHA}" + ldapSign
PROCEDURE CalcSha(password est une chaîne) : chaîne
str est une chaîne
str = HashChaîne(HA_SHA_160, password)
str = Crypte(str, "", compresseAucun+crypteAucun, encodeBASE64)
RENVOYER "{SHA}" + str
PROCEDURE CheckSSha(password est une chaîne, ldapSign est une chaîne) : booléen
str est une chaîne
str = Décrypte(ldapSign, "", compresseAucun+crypteAucun, encodeBASE64)
salt est une chaîne = Droite(str, Taille(str) - 20)
calSign est une chaîne = CalcSSha(password, salt)
RENVOYER calSign = "{SSHA}" + ldapSign
PROCEDURE CalcSSha(password est une chaîne, salt est une chaîne) : chaîne
str est une chaîne
str = HashChaîne(HA_SHA_160, password + salt)
str = Crypte(str + salt, "", compresseAucun+crypteAucun, encodeBASE64)
RENVOYER "{SSHA}" + str
PROCEDURE CheckLdap(password est une chaîne, ldapSign est une chaîne)
res est un booléen
SI Gauche(ldapSign, 5) = "{SHA}" ALORS
res = CheckSHA(password, Droite(ldapSign, Taille(ldapSign) - 5))
SINON SI Gauche(ldapSign, 6) = "{SSHA}" ALORS
res = CheckSSha(password, Droite(ldapSign, Taille(ldapSign) - 6))
SINON
Trace ("Algo inconnu")
res = Faux
FIN
RENVOYER res |
Partager