[erledigt] Username + Password Überprüfung mit Rückgabewert für http request
am 09.01.2012 - 16:27 Uhr in
Hallo zusammen,
nach längerer unerfolgreicher Recherche im Netz, versuche ich mein Glück jetzt hier bei euch.
Gesucht ist eine Methodik um Benutzername + Password von Usern in meinem Drupal System zu überprüfen und ein true oder false zu erhalten.
Da ich vermute dass geht in Richtung PHP Script, habe auch schon einmal ein bischen im User Modul und in der password.inc geschaut.
Leider habe ich es nicht hinbekommen die PW Verschlüsselung nachzubasteln.
Über Hilfe wäre ich sehr dankbar.
Mit freundlichen Grüßen
Dave
Habe es selbst hinbekommen mit der password.inc, falls es wer brauch hier der code.
<?php
// General variables
$password = 'root';
$name = 'root';
$stored_hash = '';
$i = 0;
$output = '';
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
// DB Connection
mysql_connect("localhost","root","");
mysql_select_db("drupal");
// Get users password_hash from DB
$sql = "SELECT pass From users WHERE name ='" . $name . "';";
$result = mysql_query($sql);
// User unknown
if(mysql_num_rows($result)==0){
return FALSE;
}else{
$row = mysql_fetch_assoc($result);
$stored_hash = $row['pass'];
}
// Generate setting
$setting = substr($stored_hash, 0, 12);
if ($setting[0] != '$' || $setting[2] != '$') {
return FALSE;
}
// Generate count_log2
$count_log2 = strpos($itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30) {
return FALSE;
}
// Generate salt
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8) {
return FALSE;
}
// Convert log
$count = 1 << $count_log2;
//Generate hash
$hash = hash('sha512', $salt . $password, TRUE);
do {
$hash = hash('sha512', $hash . $password, TRUE);
} while (--$count);
$len = strlen($hash);
do {
$value = ord($hash[$i++]);
$output .= $itoa64[$value & 0x3f];
if ($i < $len) {
$value |= ord($hash[$i]) << 8;
}
$output .= $itoa64[($value >> 6) & 0x3f];
if ($i++ >= $len) {
break;
}
if ($i < $len) {
$value |= ord($hash[$i]) << 16;
}
$output .= $itoa64[($value >> 12) & 0x3f];
if ($i++ >= $len) {
break;
}
$output .= $itoa64[($value >> 18) & 0x3f];
} while ($i < $len);
$output = $setting . $output;
$expected = 12 + ceil((8 * $len) / 6);
$hash = (strlen($output) == $expected) ? substr($output, 0, 55) : FALSE;
// Validate PW
if($hash && $stored_hash == $hash)
echo 'true';
else
echo 'false';
?>- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 1 Woche 4 Tagen
vor 1 Woche 5 Tagen
vor 1 Woche 6 Tagen
vor 2 Wochen 3 Tagen
vor 2 Wochen 3 Tagen
vor 3 Wochen 1 Tag
vor 3 Wochen 1 Tag
vor 3 Wochen 1 Tag
vor 5 Wochen 4 Tagen
vor 5 Wochen 5 Tagen