# Database Passwort vergleichen



## SanDMan (30. August 2001)

Ein weiteres Problem:

Ich hab in meiner MySQL-DB die Passwörter verschlüsselt, und jetzt kann ich sie nicht mehr miteinander vergleichen (für den Login). Wie stell ich das an, dass ich das eingegebene Passwort mit dem in der Datenbank vergleichen kann???

Danke im voraus - SanDMan


----------



## Moartel (30. August 2001)

Wie hast du die denn verschlüsselt? Wäre interessant zu wissen.


----------



## SanDMan (31. August 2001)

Ich hab sie mit der Funktion "password" in phpMyAdmin verschlüsselt.

Wenn man eine neue Zeile einträgt, kann man neben Value auch Function einstellen, wo ich eben "password" ausgewählt hab.

Da stellt sich eine zweite Frage: wie kann ich diese Function direkt in der mysql-commandline benutzen?


----------



## Shooter2k (23. März 2003)

*passwort abfrage*

Hallo ich habe ein so ähnliches Problem und zwar habe ich eine Seite dort lege ich di Benutzerprofile an .
Die Tabelle besteht aus name, passwort, email, homepage

dann habe ich eine Loginseite und jetzt weis ich nicht wie ich das vergleichen soll bzw abfragen soll. My Code der nicht funzt sieht so aus 

```
<p>Login:</p>
<form name="form1" method="post" action=<? php_self ?> >
  Username<input type="text" name="name"><br>
  Passwort<input type="text" name="pass"><br>
  <input type="submit" name="Submit" value="Abschicken">
</form>
<p>&nbsp;</p>


<?
include ("verbindung.php");
if ($name == $username || $pass == $passwort)
{
echo "du bist drin";
}else
{
echo "fehler";
}
?>
```

wobei $passwort die tabelle in der datenbank gemeint ist .. aber die fragt er irgendwie nicht ab 
das include verbindung.php stelle die verbindung mit der DB her.


----------



## SonicBe@m (25. März 2003)

http://www.mysql.com/doc/en/Miscellaneous_functions.html#IDX1333
soviel zu der pass funktion

du kannst aber auch nen md5 benutzen was auch besser ist das ist ganz einfach.
du machst im prinzip nichts anderes als nen md5 password in die datenbank also das flag auf md5
nun kannste im php ne funktion aufrufen die md5() heist!
nun zur eigentlichen verschlüsselung
erstell in der datenbank nen varchar 255 (find ich am besten...)
wenn der user sich nun bei dir anmeldet dann schreibste in die datenbank das verschlüsselte passwort

```
$passwort = md5($eingabe_passwort);
mysql_query("insert into $table (id,,name,password) values('','Franz',$passwort)");

//und wenn der user sich nun einlocken will machste die abfrage 
genauso nur vergleichste das nun einfach

$result = mysql_query("select name , passwort from $table where id=$id");
$row = mysql_fetch_array($result);
$ausgabe="falsch";
if($row[passwort] == md5($eingabe_passwort)){
  $ausgabe = "korrekt";
}
echo $ausgabe;
```

na dann viel spass 

da ist mir noch ne möglichkeit eingefallen wie du es abprüfen kannst

```
$result = mysql_query("select name , passwort,md5($eingabe_passwort) from $table where id=$id");
$row = mysql_fetch_array($result);
$ausgabe="falsch";
if($row[passwort] == $row[2]){
  $ausgabe = "korrekt";
}
echo $ausgabe;
```

das hatt den vorteil das das system wo es leuft kein md5 braucht
um das zu erklären
ich sag der sql einfach sie soll mir das passwort das ich eingebe verschlüsseln und zurrückschicken.


----------



## loki2002 (26. März 2003)

mhh.. also fuer ein password feld varchar255 zu benutzen ist absoluter bloedsinn ... 

md5 hat eine 32bit verschluesselungs-technik und somit reicht varchar 32 auch voellig aus.

anstellen von dem internen mysql-password sollte man(n od. frau ) md5 als verschluesselung nutzen, sommit kann mann ganz leich via php das ueberpruefen lassen.


----------



## SonicBe@m (26. März 2003)

ist aber egal
wie gesagt ich nutze immer varchar 255 grund dessen weil es bei seiner anwendung eh nicht auf speicher lasten ankommt... ^^
für was soll ich nen varchar 32 benutzen wenn bei 255 eh nur 32 genutzt werden aber 255 benutzt werden koennen...
die systeme heutzutage sind mehr als schnell genug um das zu verkraften...
und was das 
*anstellen von dem internen mysql-password sollte man(n od. frau )* angeht
deswegen habe ich den link geschickt
die interne mysql passwortverschlüsselung *SOLL NICHT* angewandt werden!
das steht sogar in der doc weils logisch ist eben deswegen weil die mysql zugangs passwörter genau mit dem selben verfahren verschlüsselt sind und wenn man weis wie man das knackt dann koennte man auch alle anderen pws knacken!....
evt haste einen teil net gelesen...
->
select name , passwort,*md5($eingabe_passwort)* from $table where id=$id
und da mysql ebenfalls das unterstützt braucht man die md5() funktion im php nicht aufrufen... ^^
ausserdem wenn einem wirklich auf sicherheit ankommt dann benutzt man eh gleich nen rsa mit 160 bit schlüssel...


			
				loki2002 hat gesagt.:
			
		

> mhh.. also fuer ein password feld varchar255 zu benutzen ist absoluter bloedsinn ...
> 
> md5 hat eine 32bit verschluesselungs-technik und somit reicht varchar 32 auch voellig aus.
> 
> anstellen von dem internen mysql-password sollte man(n od. frau ) md5 als verschluesselung nutzen, sommit kann mann ganz leich via php das ueberpruefen lassen.


----------



## loki2002 (26. März 2003)

mhh.. kein mensch, der halbwegs gesund ist, gibt ein laengeres passwort als 12 Zeichen ein  ... max 8 reichen vollkommen aus .. 

aber ich finde schon das es einen unterschied macht, ein feld als varchar 32 anstelle von varchar 255 zu setzen ... weil es einfach unnoetig ist, auch wenn es vielleicht nicht die erhofte performance bringt, dennoch sollte man mit den Mysql-Resourcen *sinnvoll* umgehen. 

nichts fuer ungut..


----------



## Dario Linsky (7. April 2003)

MD5-verschlüsselte Strings sind immer 32 Bytes lang, also wäre doch eigentlich ein normales char-Feld mit 32 Zeichen länger sinnvoller als ein varchar-Feld, oder? Nur mal so als Vorschlag.


----------

