• STATISTIQUES
  • Il y a eu un total de 0 membres et 48225 visiteurs sur le site dans les dernières 24h pour un total de 48 225 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Correctement hacher un mot de passe
17-06-2011, 04h18 (Modification du message : 19-11-2012, 19h01 par InstinctHack.)
Message : #1
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 157
Inscription : Jan 2012
[Php] Correctement hacher un mot de passe
A chaque fois l'on créé un programme qui stock des données sensible comme un mot de passe il est primordial de bien protéger l'information. En PHP il existe une fonction qui ce nomme md5 (Message Digest 5) qui consiste a encrypter à partir d'un fichier numérique, son empreinte numérique (en l'occurrence une séquence de 128 bits ou 32 caractères en notation hexadécimale) avec une probabilité très forte que deux fichiers différents donnent deux empreintes différentes. Sa été pendant plusieurs années la façon la plus sur d'encrypter les mots de passe à condition qu'il ait 6 caractères et plus. Depuis 4 ans maintenant sur le web, il ya de plus en plus de librairies MD5 qui sont en traine de décrypter toutes les possibilités de caractère avec leur équivalant ce qui permet a des hacker de trouver en 2 secondes ce qui prendrait 1 an a décrypter par brute force.

Ex: http://decrypt.fr/ qui dit en avoir décrypté 250 000 000

Il est donc primordial pour tout bon codeur de metre sur pied un système qui permet de bien encoder les mot de pass.

Certain programmeur utilise la technique du double MD5 ... perso, j’ai la crainte que si il on fait une librairie pour les md5 simples, ya de bonne chance qu'il le face pour les doubles et voir même les triples encodages puisque c'est une technique très répandue.

La meilleure façon de bien encrypter les mots de passe c'est de faire une manipulation unique et secrète avec le mot de passe avant l'encryptage MD5 que l'ont nomme "Clé d'encription"

Ex:
Code PHP :
$cle "7tg%4r8*97hhfr#121)2"// 20 caractères ou + 

Cette clé peut être fabriqué de façon complètement random et enregistrer dans une table l'hors de l'installation de l'application que vous créé ou simplement rentrer à la dure dans votre fichier config.

La technique consiste a joindre les deux ensemble avant l'encryptage

Ex:
Code PHP :
$password md5(md5($cle.$_POST['password'].$cle)); 

Vos mots de passe sont à présent complètement sécurisé, car la chaine encryptée a minimum 48 caractères et doublement encodés =)

Si on voulait pousser l'expérience a un extrême on pourrait faire quelque chose du genre de

Code PHP :
$cle "7tg%4r8*97hhfr#121)2"// 20 caractères ou + 

function pe($cle$pass){
    
$c_cle md5(md5(sha1($cle)));
    return 
md5(md5($c_cle.$pass.sha1($c_cle))); 
}

$password pe($cle$_POST['password']);

$membre mysql_fetch_assoc(mysql_query("SELECT * FROM membre where password='$password' and username='$username'")); 

Veillez cité la source et l'auteur si vous désirer reprendre mon tuto.

Soyez intelligent et restez WhiteHat!
Par CyberSee
+1 (0) -1 (0) Répondre
29-02-2012, 23h23
Message : #2
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: Correctement encoder un mot de passe
loin de moi l'idée de te traiter d'idiot, mais ta méthode de md5(md5($var)) AUGMENTE le risque de collisions, elle est donc à ne SURTOUT pas faire, je suis en train de changer d'OS, c'est un peu la merde, mais je posterais un script qui liste les hash (c'est tous simple)
de plus utiliser une aussi longue clé ne sert pas à grand chose. il vaut mieux se tourner vers du sha1, sha256, voir whirpool (que j'utilise car des librairies whirpool j'en n'ai pas trouver des masses...)
de plus il existe 4 types de sel classé selon 2 critères ;
sel constant statique
sel constant dynamique
sel variable statique
sel variable dynamique

le plus sur étant encore le dernier Smile
désolé j'ai pas le temps de faire mieux, mais attention à la méthode de CyberSee :/ elle n'est pas fiable du tout...
(selon mon petit livre sur la crypto et plusieurs sources sur internet Wink )
php toujours Wink
Code PHP :
$pseudo="sonn";$mdp="azerty";$sel="%:#";
foreach(
hash_algos() as $element)
{
    echo 
$element." : ".hash($element,$pseudo.$mdp.$sel).'<br />';


voilà, voilà Wink pour des scripts sécurisés, je les garde pour mon framework donc pas dans ce sujet Smile
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut