bonsoir j'ai un script en php qui me permet de vérifier qu'un mot de passe en clair est égal à son homologue crypté au format "forum phpb3".
L'homologue ne peut pas être décrypté pour le moment, donc la vérification se fait forcement en cryptant le premier et en le comparant au résultat recherché.
Donc j'ai ce code là qui me permet de faire cette vérif.
code.php
[code]<?php
include_once("hash.php");
if (phpbb_check_hash('35468262001', '$H$9dUV9sFpBuJzNBkTHmC.UMXXzOyO6S/'))
print "GOOD";
else
print "BAD";
?>[/code]
et j'ai ce second code qui fait le cryptage et renvoie l'info vrai ou faux
hash.php
[code]<?php
/**
@return bool Returns true if the password is correct, false if not.
*/
function phpbb_check_hash($password, $hash)
{
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if (strlen($hash) == 34)
{
return (_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
}
return (md5($password) === $hash) ? true : false;
}
/**
Generate salt for hash generation
*/
function _hash_gensalt_private($input, &$itoa64, $iteration_count_log2 = 6)
{
if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
{
$iteration_count_log2 = 8;
}
$output = '$H$';
$output .= $itoa64[min($iteration_count_log2 + ((PHP_VERSION >= 5) ? 5 : 3), 30)];
$output .= _hash_encode64($input, 6, $itoa64);
return $output;
}
/**
Encode hash
*/
function _hash_encode64($input, $count, &$itoa64)
{
$output = '';
$i = 0;
do
{
$value = ord($input[$i++]);
$output .= $itoa64[$value & 0x3f];
if ($i < $count)
{
$value |= ord($input[$i]) << 8;
}
$output .= $itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count)
{
break;
}
if ($i < $count)
{
$value |= ord($input[$i]) << 16;
}
$output .= $itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count)
{
break;
}
$output .= $itoa64[($value >> 18) & 0x3f];
}
while ($i < $count);
return $output;
}
/**
The crypt function/replacement
/
function _hash_crypt_private($password, $setting, &$itoa64)
{
$output = '';
// Check for correct hash
if (substr($setting, 0, 3) != '$H$')
{
return $output;
}
$count_log2 = strpos($itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30)
{
return $output;
}
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8)
{
return $output;
}
/**
$output = substr($setting, 0, 12);
$output .= _hash_encode64($hash, 16, $itoa64);
return $output;
}
?>[/code]
le fonctionnment de ces 2 codes est bon je l'ai vérifié
donc je souhaiterai faire la chose suivante: dans un fichier type index.php
désolé la syntaxe va être quelque peu épuré
[code]
<php?
$mot_de_passe_clair='35468262001';
$mot_de_passe_encrypter;
$mot_de_passe_encrypter = encrypt $mot_de_passe_clair
echo $mot_de_passe_encrypter
?>
[/code]
après je pourrais reprendre mes petits, mais je bloque et comme je débute, là je suis largué.
merci d'avance
Flo