Php Passverschlüssulung problem (hash)

umar420

Erfahrenes Mitglied
Hallo,

Ich möchte mein problem an euch schildern hoffe ihr könnt mich weiter helfen.

Ich komme zu mein Problem. Ich habe in html ein regestration formular erstellt. Es sollte in sql eingetragen werden (Username, Password, Email). Problem ist beim Password ich habe die schon verschlüselt in sql hin bekommen, aber es wird immer der selbe hash code in sql abgelegt egal welche password ich in feld eintrage es wird immer der selbe hash code abgelegt.

Link zu Bild: http://s1.directupload.net/images/110724/79z8sog3.jpg

Meine code:

PHP:
<?php

class Useranlegen {
    
    private $username;
    private $password;
    private $email;

    
    function __construct($username, $password, $email) {
        
        $this->username = $username;
        $this->password = $password = hash('sha256', $salt);
        $this->email = $email;

    }
    
    //Set Funcition
    
    function setUsername ($username){
        $this->username = $username;
    }
    
    
    function setPassword($password){
         $this->password = $password;
    }
    
    
    function setEmail($email){
        $this->email = $email;
    }
    
    
    // GET FUNCTION
    
    public function getUsername(){
        return $this->username;
    }
    
    
    public function getPassword(){
        return $this->password;
    }
    
    public function getEmail(){
        return $this->email;
    }
    
    
} 

?>

Meine 2te Code der in sql einträgt:

PHP:
<?php

include_once 'felderfuellen.php';

$Useranlegen = new Useranlegen ($_POST ['username'], $_POST ['password'], $_POST ['email']);
        


        $mysqli = new mysqli('localhost', 'root', 'root', 'bweb');

        if (!mysql){
            
            echo 'nicht verbunden!';
        }
        
        else {
            
            echo 'Datenbankverbindung hergestellt';
            echo '<br>';
        }
        
$sql = sprintf('INSERT INTO user (username, password, email) VALUES (\'%s\', \'%s\', \'%s\' )',
           $mysqli->real_escape_string($Useranlegen->getUsername()),
	   $mysqli->real_escape_string($Useranlegen->getPassword()),
	   $mysqli->real_escape_string($Useranlegen->getEmail())
 
                   
     );

$mysqli->query($sql);

if($mysqli->close()){
    echo 'Verbindung getrennt';
    echo '<br>';
}



?>

Ich wäre sehr dankbar, wenn ihr mich weiter helft. Bitte nicht gleich ausrasten wenn ich ein fehler gemacht habe.
 
Zuletzt bearbeitet:
Versuch es doch einfach über einen MD5(). Das ist denke ich mal die einfacherere Variante. Eine Hashtabelle ist meines Wissens etwas anderes, also das was du brauchst.

Beispiel für einen MD5():

PHP:
$passwort = md5($_POST ['password']);
 
Danke für antworten. Aber so weit ich mitbekommen habe es ist sehr leicht md5 zu knacken. Und habe deine variante auch getestet aber ich bekomme immer das selbe code in sql egal ob ich in pass feld admin schreibe oder tisch es kommt gleiche code in sql. Das sollte normal nicht so sein oder ?
 
Zuletzt bearbeitet:
Du hast immer den gleichen Wert, weil du immer nur die Var $salt einfügst. Du musst dem Hash natürlich auch dein PW hinzufügen.
$pw = $pw_neu.$salt;
$pw = hash('sha256', $pw);
Kannste ja mal so versuchen
lg
 
Zuletzt bearbeitet:
Also soweit ich weiß, ist MD5 ganz und garnicht leicht zu knacken. Ich denke mal das liegt hierran: real_escape_string(); Lösch das doch erstmal raus und speicher die Variable einfach so rein und lass dir das was du speichern willst per Echo ausgeben um zu sehen ob es denn richtig ist oder nicht
 
Message-Digest Algorithm 5 (MD5) ist eine weit verbreitete kryptographische Hashfunktion, die aus einer beliebigen Nachricht einen 128-Bit-Hashwert (deutsch: Prüfsumme) erzeugt. MD5 wurde 1991 von Ronald L. Rivest entwickelt. Sie gilt inzwischen nicht mehr als sicher, da es mit überschaubarem Aufwand möglich ist, unterschiedliche Nachrichten zu erzeugen, die dieselbe MD5-Prüfsumme aufweisen.
Inzwischen sind die Kollisionsangriffe so weit fortgeschritten, dass eine weitere Nutzung von MD5, insbesondere in solchen Szenarien, in denen der Nutzer nicht die zu signierenden Dateien komplett kontrolliert, abzulehnen ist. Ein 2009 durchgeführter Test des Computermagazins c’t unter Verwendung von GPGPU ermöglicht es einem etwa ein Jahr alten Highend-Spiele-PC mit zwei Nvidia GeForce 9800 GX2 (insgesamt vier Grafikprozessoren), in knapp 35 Minuten eine Kollision zu finden.
Es wird momentan nur nicht empfohlen. Ich bin deshaltb beim sha256 gelandet, aber jeder kann ja für sich entscheiden, was er für sich nehmen will^^
 
Zuletzt bearbeitet:
Zurück