OVH Community, your new community space.

[TUTO] Générateur de mot de passe et cryptage


frenchie
13/05/2015, 11h08
Citation Envoyé par AnonymousCoward
BBR : Si une personne mal intentionnée découvre que tu génères tes mots de passe avec ce script, je pense que la force du mot de passe est quasiment aussi faible qu'en tapant au hasard sur un clavier. Honnêtement.

Mais de toutes manières, il ne faut ni faire l'un ni faire l'autre.

Le MD5, à ce moment, tu peux peut-être corriger ton code. Notamment l'extrait suivant :
Code:
Le voilà maintenant crypté pour l'utilisation dans un fichier .htpasswd :
en indiquant que c'est un hash ou un condensé numérique plutôt que quelque-chose de chiffré.

D'ailleurs, aucune des sorties que tu génères avec les fonctions de hash n'est utilisable pour un fichier .htpasswd. Voir httpd.apache.org/docs/2.2/misc/password_encryptions.html .
Le SHA-1, à la rigueur, si tu l'affichais en base64 au lieu de la sortie hexadécimale fournie par la fonction sha1() du PHP.

--
AnonymousCoward
Taper un mot de passe au hasard sur un clavier est une faible sécurité ?
la je suis perdu. Quelqu'un qui viens attaquer mon wordpress et qui doit casser Klih^#¨ùkmpj#IHkjd je ne vois pas comment il va faire. De meme pour mon serveur avec Fail2ban par IP. ca va lui prendre des siècles.

BBR
11/05/2015, 15h58
bon faisons avancer le schmilblick c'est ce qui est important, comment générer un mot de passe plus sécurisé ?

AnonymousCoward
11/05/2015, 15h44
Effectivement, l'appel à crypt() marche pour les .htpasswd . Précédent post sera modifié en conséquence.

--
AnonymousCoward

BBR
11/05/2015, 14h45
bizarre car cela donne le même résultat que la page ovh : http://www.ovh.com/fr/support/outils/crypt_password.pl
exemple, le script donne
Création d'un mot de passe et cryptage
yPµuRO
Le voilà maintenant crypté pour l'utilisation dans un fichier .htpasswd :
eVdjCv1YYN8bg
la page ovh destinée à crypter les pass, avec ce même mot de passe et la clé eV (mise manuellement puisque sur le script elle est aléatoire mais pas sur la page ovh) donne :

Mot crypté :

eVdjCv1YYN8bg
j'ai testé dans un .htaccess et cela fonctionne

AnonymousCoward
11/05/2015, 14h12
BBR : Si une personne mal intentionnée découvre que tu génères tes mots de passe avec ce script, je pense que la force du mot de passe est quasiment aussi faible qu'en tapant au hasard sur un clavier. Honnêtement.

Mais de toutes manières, il ne faut ni faire l'un ni faire l'autre.

Le MD5, à ce moment, tu peux peut-être corriger ton code. Notamment l'extrait suivant :
Code:
Le voilà maintenant crypté pour l'utilisation dans un fichier .htpasswd :
en indiquant que c'est un hash ou un condensé numérique plutôt que quelque-chose de chiffré.

D'ailleurs, aucune des sorties que tu génères avec les fonctions de hash n'est utilisable pour un fichier .htpasswd. Voir httpd.apache.org/docs/2.2/misc/password_encryptions.html .
Le SHA-1, à la rigueur, si tu l'affichais en base64 au lieu de la sortie hexadécimale fournie par la fonction sha1() du PHP.

--
AnonymousCoward

BBR
11/05/2015, 11h44
mouais...
tu peux me démontrer qu'un pass style : Mvuµx£Yc0f8µ!PS est plus faible, moins fiable que celui que tu vas générer en tapant au hasard sur ton clavier ou pire en mettant prenomdatedenaissance ou prenomdepartement (si, si, je le vois souvent ! ) ?
Quant à md5 et compagnie, bien sûr que c'est du hashage mais cela peut être utile par exemple pour une BDD

janus57
11/05/2015, 11h22
Citation Envoyé par frenchie
Bonjour,

Peux tu être plus général et m'indiquer en quoi les mots de passes non chiffrés via ce script peuvent-être facilement cassés?
Bonjour,

si j'ai bien compris son post c'est parce que rand() retourne des nombre prévisible via un algorithme, donc en gros plutôt que de renforcer ta sécurité tu la "trou" car il devient encore plus facile pour celui qui sait comment faire de trouver ton passe après avoir vu la source.

Sinon suffit de lire ce que tu la doc PHP :
Attention :
Cette fonction ne génère pas de valeurs sécurisées d'un point de vue cryptologie, et ne doit pas être utilisée dans un contexte de cryptologie. Si vous avez besoin d'un valeur sécurisée d'un point de vue cryptologique, utilisez plutôt la fonction openssl_random_pseudo_bytes().
Cordialement, janus57

frenchie
11/05/2015, 11h03
Citation Envoyé par AnonymousCoward
IL NE FAUT SURTOUT PAS UTILISER CE SCRIPT !


Ce script offre une sécurité nulle.
En effet, la fonction rand() ne retourne pas un nombre aléatoire mais pseudo-aléatoire. De plus, le générateur pseudo-aléatoire demande à être initialisé via un appel à la fonction srand() en lui donnant comme argument une source d'aléa fiable comme /dev/random ou /dev/urandom .

Extrait de www.php.net/manual/fr/function.rand.php :


Et puis les algorithmes md5, sha* ne sont pas des algorithmes de chiffrement mais des algorithmes de condensé numérique, de "hash".

BBR : L'initiative est louable mais, s'il te plaît, supprime ce code quitte à publier une autre version plus tard.

--
AnonymousCoward
Bonjour,

Peux tu être plus général et m'indiquer en quoi les mots de passes non chiffrés via ce script peuvent-être facilement cassés?

AnonymousCoward
11/05/2015, 10h44
IL NE FAUT SURTOUT PAS UTILISER CE SCRIPT !


Ce script offre une sécurité nulle.
En effet, la fonction rand() ne retourne pas un nombre aléatoire mais pseudo-aléatoire. De plus, le générateur pseudo-aléatoire demande à être initialisé via un appel à la fonction srand() en lui donnant comme argument une source d'aléa fiable comme /dev/random ou /dev/urandom .

Extrait de www.php.net/manual/fr/function.rand.php :
Attention
Cette fonction ne génère pas de valeurs sécurisées d'un point de vue cryptologie, et ne doit pas être utilisée dans un contexte de cryptologie. Si vous avez besoin d'un valeur sécurisée d'un point de vue cryptologique, utilisez plutôt la fonction openssl_random_pseudo_bytes().
Et puis les algorithmes md5, sha* ne sont pas des algorithmes de chiffrement mais des algorithmes de condensé numérique, de "hash".

BBR : L'initiative est louable mais, s'il te plaît, supprime ce code quitte à publier une autre version plus tard.

--
AnonymousCoward

BBR
08/05/2015, 14h16
Trouver un mot de passe compliqué est primordial, on trouve des sites pour faire tout ça, mais je préfère le faire sur un site m'appartenant car rien ne nous dit que les sites n'alimentent pas une BDD, un peu de parano ne coûte rien

Voilà un petit bout de code qui vous permettra d'en générer autant que vous voulez sans vous creuser la tête.
Il comporte plusieurs types de cryptages (et hashage pour les puristes).
Vous pouvez le tester : http://www.how-to.ovh/generateur-password.php

Bien entendu, vous pouvez l'améliorer, le modifier, etc. C'est vraiment un affichage spartiate qui va à l'essentiel.

Code PHP:




Générateur de mot de passe crypté



Création d'un mot de passe et cryptage
    $caracteres = array(
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','_','%','+','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','!','ù','£','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','-','µ');
    
$nb_caracteres 15#mettez le nombre qui vous convient     
    
$codage $caracteres;          
    
$maxcar count($codage)-1;
    
$car '';
    for(
$i 0$i $nb_caracteres$i++)
    {
    
$array_car rand(0,$maxcar);
    
$car .= $codage[$array_car];
    }
    echo 
"$car";

$password crypt($carbase64_encode($car));
$password_md5 md5($car);
$password_sha1 sha1($car);
$password_sha2 hash('sha256',$car);
$password_sha3 hash('sha512',$car);
?>


Le voilà maintenant crypté pour l'utilisation dans un fichier .htpasswd : 
echo $password ";  ?>


D'autres hashages
 md5 : echo $password_md5?>

sha1 : echo $password_sha1?>


sha256 : echo $password_sha2?>


sha512 :echo $password_sha3?>