Bravo pour le code.
-
Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !Rejeter la notice
TUTO Génération des mots de passe UNICODE V2
Discussion dans 'Test de logiciel & Echange d'expériences' créé par Kobex, Mar 3, 2018.
Tags:
Attention, il faut éviter d'utiliser la fonction crypte mais utiliser la fonction cryptestandard car crypte ne donne pas toujours le même résultat selon wd wm wb
suenodesign apprécie ceci.
Bonjour,
J'ai demandé la version parce que chez vérifié quelque chose, chez moi. J'ai dû utilisé CaractUnicode au lieu de Caract pour que ça marche en 23 dans la la procédure Token.
Il Faudrait vérifier
Bonjour,
Je vous partage mes trois procédures qui permet de générer des mots de passe à chaine aléatoire en UNICODE, de plus j'ai ajouté la notion de "Cacher le Salt", n'hésitez pas à commenter et à aider à améliorer, cela peut aider bon nombre d'entre nous et inutile de réinventer la roue à chaque fois
Fonctionnement :
Vous devez juste définir la longueur de la chaine de salage et à partir de combien de caractères en partant de la gauche vous voulez cacher la chaine de salage.
Génération d'un token :Code (Text):
nNbCaratereSalt est un entier = 8
nPositionSalt est un entier = 4
Génération d'un mot de passe :Code (Text):PROCÉDURE TokenChaine(nN)
InitHasard()
sChaîneAléatoire est une chaîne
BOUCLE (nN)
nCaractère est un entier = Hasard(65,122)
TANTQUE (91 <= nCaractère <= 96)
nCaractère = Hasard(65,122)
FIN
sChaîneAléatoire += Caract(nCaractère)
FIN
RENVOYER sChaîneAléatoire
et pour vérifier le mot de passe :Code (Text):
PROCÉDURE GenPassword(sPass est une chaîne UNICODE)
nNbCaratereSalt est un entier = 8
nPositionSalt est un entier = 4
sChaineCrype est une chaîne UNICODE
sSalt est une chaîne = TokenChaine(nNbCaratereSalt)
bufHash_Binaire est un Buffer = HashChaîne(HA_HMAC_SHA_160, sPass+sSalt, sSalt)
sHash_Hexa est une chaîne
POUR nIndice = 1 _À_ Taille(bufHash_Binaire)
sHash_Hexa += NumériqueVersChaîne(Asc(bufHash_Binaire[[nIndice]]),"02x")
FIN
sHashDecrypt est une chaîne = Crypte(sHash_Hexa, "", crypteRapide + compresseChaîneCourte, encodeBASE64)
sHashDecrypt = Remplace(sHashDecrypt,RC,"")
sChaineCrype = Gauche(sHashDecrypt,nPositionSalt)+sSalt+Milieu(sHashDecrypt,nPositionSalt+1)
RENVOYER sChaineCrype
A vos claviers...Code (Text):
PROCÉDURE VerifPassword(sHashVerif est une chaîne UNICODE, sPass est une chaîne UNICODE)
nNbCaratereSalt est un entier = 8
nPositionSalt est un entier = 4
sChaineCrype est une chaîne UNICODE = Gauche(sHashVerif,nPositionSalt)
sSalt est une chaîne UNICODE = Milieu(sHashVerif,nPositionSalt+1, 8)
sHash est une chaîne UNICODE = sChaineCrype+Milieu(sHashVerif,nPositionSalt+nNbCaratereSalt+1)
sHashDecrypt est une chaîne UNICODE = Décrypte(sHash, "", crypteRapide + compresseChaîneCourte, encodeBASE64)
bufHash_Binaire est un Buffer
POUR nInd = 1 _À_ Taille(sHashDecrypt) PAS 2
bufHash_Binaire += Caract(Val(sHashDecrypt[[nInd SUR 2]], "x"))
FIN
SI HashVérifieChaîne(HA_HMAC_SHA_160, sPass+sSalt, bufHash_Binaire, sSalt) = Vrai ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
PS : Si vous aimez, un petit j’aime fait plaisir....Cliquez pour agrandir...
joker apprécie ceci.
y'a aussi ce code sur l'aide de windev pour generer un mot de pass
Syntaxe
suenodesign apprécie ceci.