<?php
define('STR_TEXTE', 'texte');
define('STR_ACTION', 'action');
$bool_action = isset($_REQUEST[STR_ACTION]) && isset($_REQUEST[STR_TEXTE]);
$str_texte = '';
$str_formater = '';
if ($bool_action)
{
$str_texte = $_REQUEST[STR_TEXTE];
if (get_magic_quotes_gpc())
{
$str_texte = stripslashes($str_texte);
}
}
function tester_password($mdp)
{
$longueur = strlen($mdp);
for($i = 0; $i < $longueur; $i++)
{
$lettre = $mdp[$i];
if ($lettre >= 'a' && $lettre <= 'z')
{
$point += 1;
$point_min = 1;
}
else if ($lettre >= 'A' && $lettre <= 'Z')
{
$point += 2;
$point_maj = 2;
}
else if ($lettre >= '0' && $lettre <= '9')
{
$point += 3;
$point_chiffre = 3;
}
else
{
$point += 5;
$point_caracteres = 5;
}
}
// Calcul du coefficient points/longueur
$etape1 = $point / $longueur;
// Calcul du coefficient de la diversité des types de caractères...
$etape2 = $point_min + $point_maj + $point_chiffre + $point_caracteres;
// Multiplication du coefficient de diversité avec celui de la longueur
$resultat = $etape1 * $etape2;
// Multiplication du résultat par la longueur de la chaîne
$final = $resultat * $longueur;
return $final;
}
function tester_hughes($mdp)
{
$longueur = strlen($mdp);
$coeff_minuscule = $coeff_majuscule = $coeff_chiffre = $coeff_ponctuation = $coeff_autre = 0;
$force = 0.0;
for($ii = 0; $ii < $longueur; $ii++)
{
$lettre = $mdp[$ii];
if (ord($lettre) >= ord('a') && ord($lettre) <= ord('z'))
{
$force += 26;
if (!$coeff_minuscule) { $coeff_minuscule = 0.1; }
}
else if (ord($lettre) >= ord('A') && ord($lettre) <= ord('Z'))
{
$force += 26;
if (!$coeff_majuscule) { $coeff_majuscule = 0.1; }
}
else if (ord($lettre) >= ord('0') && ord($lettre) <= ord('9'))
{
$force += 10;
if (!$coeff_chiffre) { $coeff_chiffre = 0.1; }
}
else if (strpos('!"#$%&\'()*+,-./:;<=>@[\]^_`{|}~', $lettre) !== FALSE)
{
$force += 32;
if (!$coeff_ponctuation) { $coeff_ponctuation = 0.1; }
}
else
{
$force += 128;
if ($coeff_autre == 0) { $coeff_autre = 0.1; }
}
}
$coeff = 1.0 + $coeff_minuscule + $coeff_majuscule + $coeff_chiffre + $coeff_ponctuation + $coeff_autre;
$force *= $coeff;
return intval($force);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Tester la force d'un mot de passe</title>
<style type="text/css">
<!--
body *
{
font-family: monospace;
font-size: 8pt;
}
input
{
display: block;
}
input.text
{
width: 800px;
}
form
{
margin: 0;
}
-->
</style>
<script type="text/javascript">
<!--;
function on_load()
{
if (document && document.getElementById)
{
var obj_pattern = document.getElementById('<?php print STR_TEXTE; ?>');
if (obj_pattern && obj_pattern.focus)
{
obj_pattern.focus();
}
}
}
//-->
</script>
</head>
<body onload="on_load();">
<form method="post">
<input type="hidden" name="<?php echo STR_ACTION; ?>" value="<?php echo STR_ACTION; ?>" />
<input class="text" type="text" name="<?php echo STR_TEXTE; ?>" value="<?php echo $str_texte; ?>" />
<input type="submit" class="submit" value="tester" />
</form>
<?php
if ($bool_action)
{
$int_password = tester_password($str_texte);
$int_hughes = tester_hughes($str_texte);
$int_moyenne = intval(($int_password + $int_hughes) / 2.0);
echo '<table>';
echo '<tr><td>Vu sur le net</td><td>'.$int_password.'</td></tr>';
echo '<tr><td>Hughes</td><td>'.$int_hughes.'</td></tr>';
echo '<tr><td>Moyenne</td><td>'.$int_moyenne.'</td></tr>';
echo '</table>';
}
echo '<hr />';
highlight_file(__FILE__);
?>
</body>
</html>