1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. 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.

  1. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257
    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.
    Code (Windev):

    nNbCaratereSalt est un entier = 8
    nPositionSalt est un entier = 4
     
    Génération d'un token :
    Code (Windev):
    PROCÉDURE TokenChaine(nN)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ()
    sChaîneAléatoire est une chaîne

    BOUCLE (nN)
        nCaractère est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (65,122)

        TANTQUE (91 <= nCaractère <= 96)
            nCaractère =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (65,122)
        FIN
        sChaîneAléatoire +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (nCaractère)
    FIN

    RENVOYER sChaîneAléatoire
     
    Génération d'un mot de passe :
    Code (Windev):

    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 =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (HA_HMAC_SHA_160, sPass+sSalt, sSalt)
    sHash_Hexa est une chaîne

    POUR nIndice = 1 _À_

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (bufHash_Binaire)

        sHash_Hexa +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (bufHash_Binaire[[nIndice]]),"02x")

    FIN

    sHashDecrypt est une chaîne =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHash_Hexa, "", crypteRapide + compresseChaîneCourte, encodeBASE64)

    sHashDecrypt =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,RC,"")
    sChaineCrype =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,nPositionSalt)+sSalt+

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,nPositionSalt+1)

    RENVOYER sChaineCrype
     
    et pour vérifier le mot de passe :
    Code (Windev):

    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 =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashVerif,nPositionSalt)
    sSalt est une chaîne UNICODE =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashVerif,nPositionSalt+1, 8)
    sHash est une chaîne UNICODE = sChaineCrype+

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashVerif,nPositionSalt+nNbCaratereSalt+1)
    sHashDecrypt est une chaîne UNICODE =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHash, "", crypteRapide + compresseChaîneCourte, encodeBASE64)
    bufHash_Binaire est un Buffer

    POUR nInd = 1 _À_

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt) PAS 2
        bufHash_Binaire +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt[[nInd SUR 2]], "x"))
    FIN

    SI

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (HA_HMAC_SHA_160, sPass+sSalt, bufHash_Binaire, sSalt) = Vrai ALORS
        RENVOYER Vrai
    SINON
        RENVOYER Faux
    FIN
     
    A vos claviers...
    PS : Si vous aimez, un petit j’aime fait plaisir....
     
  2. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    A première vu, le TOKEN génère un chaine simple(qui peut être ANSI, alors que nous sommes en Unicode. En environnement ANSI, ça risque poser un problème. Je pense que en environnement UC, toutes les chaines manipulés doivent être UNICODE. Comme dans Gene, tu forces l'UNICODE, il faut que dès Token, tu forces aussi le résultats. Tu fais de l'ansi, il faut , je pense le convertir. Pour Mieux comprendre ces changements, lances WD en ANSI et WD en Unicode et tu vérifie les comportements.
     
  3. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    Code (Windev):

    PROCEDURE GenPassWordUCORE(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 =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (HA_HMAC_SHA_160, sPass+sSalt, sSalt)
    sHash_Hexa est une chaîne

    POUR nIndice = 1 _A_

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (bufHash_Binaire)
       
        sHash_Hexa +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (bufHash_Binaire[[nIndice]]),"02x")
       
    FIN

    sHashDecrypt est une chaîne =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHash_Hexa, "", crypteRapide + compresseChaîneCourte, encodeBASE64)

    sHashDecrypt =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,RC,"")
    sChaineCrype =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,nPositionSalt)+sSalt+

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sHashDecrypt,nPositionSalt+1)
    RENVOYER sChaineCrype





        PROCEDURE INTERNE TokenChaine(nN)
       
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ()
        sChaîneAléatoire est une chaîne
       
        BOUCLE (nN)
            nCaractère est un entier =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (65,122)
           
            TANTQUE (91 <= nCaractère <= 96)
                nCaractère =

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (65,122)
            FIN
            sChaîneAléatoire +=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (nCaractère)
        FIN
       
        RENVOYER sChaîneAléatoire
       
        FIN
     
  4. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    J'ai remis simplement ton Ta procédure Tocken en procédure Interne, ça te permettra de mieux manipuler les changements de chaine et de variables
     
  5. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    Maintenant, J'ai testé et ce n'est pas bon comme résultat. Tu avais déjà un résultat bon avec la vérification ?
     
  6. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    Dis moi, Tu travailles avec quelle version de windev ? Je vais t'apporter un début de solution. Mais le plus important risque être UTF8
     
  7. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257
    Merci pour vos retours, je suis en version webdev 23
     
  8. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Maintenant, J'ai testé et ce n'est pas bon comme résultat. Tu avais déjà un résultat bon avec la vérification ?
    Cliquez pour agrandir...
    Chez moi, c'est ok, j'ai testé avant de publier...
     
  • Advita

    Advita Active Member
    MEMBRE WX

    Inscrit:
    Jan 13, 2018
    Messages:
    71
    J'aime reçus:
    107
    Bravo pour le code.
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,882
    J'aime reçus:
    1,532
    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.
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    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
     
  • thedrhb

    thedrhb Active Member

    Inscrit:
    Mai 19, 2018
    Messages:
    299
    J'aime reçus:
    160

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    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.
    Code (Text):

    nNbCaratereSalt est un entier = 8
    nPositionSalt est un entier = 4
     
    Génération d'un token :
    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
     
    Génération d'un 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
     
    et pour vérifier le mot de passe :
    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
     
    A vos claviers...
    PS : Si vous aimez, un petit j’aime fait plaisir....
    Cliquez pour agrandir...
    partage tres interessant
     
    joker apprécie ceci.
  • thedrhb

    thedrhb Active Member

    Inscrit:
    Mai 19, 2018
    Messages:
    299
    J'aime reçus:
    160
    y'a aussi ce code sur l'aide de windev pour generer un mot de pass
    Syntaxe
     
    suenodesign apprécie ceci.
  • Partager cette page

    Chargement...