Génération des mots de passe Unicode V2

par Administrateur :: il y a 8 mois , Mise à jour :: il y a 7 mois

Fonctionne en version WebDev 23

Je vous partage mes trois procédures qui permettent 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, à aider et à améliorer, cela peut aider bon nombre d'entre nous et inutile de réinventer la roue à chaque fois.

Fonctionnement :
Vous devez définir la longueur de la chaine de salage, puis choisir la place à laquelle vous allez l'insérer en partant de la gauche

nNbCaratereSalt est un entier = 8
nPositionSalt est un entier = 4

Génération d'un Token

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

Génération d'un mot de passe

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

et pour vérifier le mot de passe :

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

Avec cette méthode, vous n'aurez jamais dans votre base la même chaine de caractères pour vos mots de passe.

Bon dev ;)

 

0 commentaire
2 + 5 =

@Copyright 2012 - 2020 MJMS Informatique et services

Site web réalisé avec WebDev