1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
<?php
header('Content-Type: text/html; charset=UTF-8');
define('KEY_MD5', 'Je ne_5ui5 pa5_un héro!');
define('BASE', 16);
//testLogin('ygyongy', 'β', $myBdd, $myBddLink, $myUser);
function testLogin("ygyongy", "β", $oDb, $link, $oUser)
{
########################### Debut de la codification en BIN ###########################
$pwdLength = mb_strlen($password, 'utf-8');
echo $password."<br>";
echo $pwdLength;
for($i=0; $i<$pwdLength; $i++)
{
$pwd_chars_array[] = mb_substr($password, $i, 1, 'utf-8');
}
$nb_element = count($pwd_chars_array);
for($i = 0; $i < $nb_element; $i++)
{
//retourne le code ASCII de chaque caractère du mdp
$ascii_pwd_array[$i] = ord($pwd_chars[$i]);
$bin_pwd_string .= sprintf("%0".BASE."d", decbin($ascii_pwd_array[$i]));
}
$key_chars = (str_split(KEY_MD5));
$nb_element = count($key_chars);
for($i = 0; $i < $nb_element; $i++)
{
//retourne le code ASCII de chaque caractère de la clef
$ascii_key_array[$i] = ord($key_chars[$i]);
$bin_key_string .= sprintf("%0".BASE."d", decbin($ascii_key_array[$i]));
}
########################### Fin de la codification en BIN ##############################
########################### Debut de l'adapatation des longueurs de chaines ###########################
$lpwd = strlen($bin_pwd_string);
$lkey = strlen($bin_key_string);
//Permet de tronquer ou ajouter des caractères à la clef pour qu'elle joue avec le PWD
if($lkey > $lpwd)
{
$diff_char = $lpwd-$lkey;
$bin_key_string = substr($bin_key_string, 0, $diff_char); //je soustrait la différence
}elseif($lpwd > $lkey){
$bin_key_string = str_pad($bin_key_string, $lpwd, $bin_key_string, STR_PAD_RIGHT);
}
########################### Fin de l'adapatation des longueurs de chaines #############################
########################### Différents tests et appels de fonction ###########################
$hash_test = cryptage($bin_pwd_string, $bin_key_string);
echo "<hr>";
echo $hash_test;
$hash_test = mb_convert_encoding($hash_test, 'utf-8');
$nb_element = strlen($hash_test)/BASE;
$start = 0;
$test = null;
for($i = 0; $i < $nb_element; $i++)
{
if($start < strlen($hash_test))
{
$test[] = bin2Ascii($hash_test, $start);
}
$start += BASE;
}
########################### Différents tests et appels de fonction ###########################
############################ Reconstruction du mot de passe######################################
$nb_element = strlen($tmp)/BASE;
$start = 0;
for($i = 0; $i < $nb_element; $i++)
{
if($start < strlen($tmp))
{
$test[] = bin2Ascii($tmp, $start);
}
echo $start += BASE;
}
############################ fin de la reconstruction du mot de passe#############################
} // fin de function testLogin
function cryptage($parameter1, $parameter2)
{
$length = strlen($parameter1);
echo $parameter1."<br>".$parameter2;
for($i=0; $i < $length; $i++)
{
$hash .= (bool)$parameter1[$i] ^ (bool)$parameter2[$i];
}
return $hash;
}
function bin2Ascii($chaine, $start)
{
$tmp = substr($chaine, $start, BASE);
$tmp = bindec($tmp);
$tmp = chr($tmp);
return $tmp;
} |
Partager