crypt: Einweg-Zeichenketten-Verschlüsselung (Hashbildung)

Zweck

Mit der hier implementierten Funktion ist es möglich, ein Passwort (oder eine beliebige Zeichenkette) mit dem Befehl "crypt" zu verschlüsseln. Es handelt sich dabei um eine Einweg-Verschlüsselung: Es ist nicht vorgesehen, aus dem Schlüssel die ursprüngliche Zeichenkette zu rekonstruieren. Daher ist es die Weitergabe dieses Schlüssels (etwa zur Speicherung in einer Datenbank) relativ sicher.
Ein Angreifer kann allein mit dem Schlüssel nichts anfangen, sondern müsste z.B. mit der Brute-Force-Methode eine große Menge an Zeichenketten (beim Data-Encryption-Standard 2^52 ≈ 72 Billiarden Kombinationen) mit dem gleichen Algorithmus ebenfalls verschlüsseln und die beiden Schlüssel vergleichen.
Dies ist immerhin weniger aufwändig als ein direkter Brute-Force-Angriff auf das eigentliche Ziel (etwa eine geschützte Website), da der Angreifer hierbei beliebig viele Versuche unternehmen und eigene Hardware verwenden kann – deswegen sollte man auch die Passwortschlüssel nicht unbedingt auf einem Schild vor sich her tragen.

Was soll ich tun?

Wenn Dich jemand hier her geschickt hat, dann sollst du dir wahrscheinlich ein Passwort ausdenken und es in das Eingabefeld dort unten schreiben, den Schalter drücken, und schließlich den erzeugten Schlüssel aus dem gelben Feld demjenigen (z.B. per E-Mail) schicken, damit er es beispielsweise zum Schutz einer Website zusammen mit Deinem Login-Namen in eine Benutzerliste eintragen kann.

        *

* Diese Funktion gibt eine Empfehlung zur Qualität des gewählten Passwortes. Du musst dich nicht an diese Beurteilung halten. (JavaScript muss aktiviert sein.)

Tipps zur Wahl eines sicheren Passwortes

Siehe auch: SELFHTML - Die sichere Passwort-Wahl

Open Source

if( isset( $_POST['string'] ) ){
	if( !isset( $_POST['string2'] ) || $_POST['string'] != $_POST['string2'] ){
		echo '<p class="keycap"><big>Fehler: Zeichenketten stimmen nicht überein.</big></p>';
	}else{
		$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/.';
		$salt = $pattern{mt_rand(0,63)} . $pattern{mt_rand(0,63)};
		$crypted = crypt( trim( $_POST['string'] ), $salt );
		echo  '<p class="keycap"><big>Erzeugter Schlüssel:</big> &nbsp; <span class="keybox">'
			. $crypted . '</span></p>
			<p><small>(Es ist kein Fehler, dass beim wiederholten Aufruf mit gleichen Passwort
			verschiedene Schlüssel erzeugt werden.)</small></p>';
	}
}

Siehe auch: php.net - crypt

Anstiftung zum Skeptizismus:

Wenn ihr hier (genauso wie anderswo) eure Passwörter eintippt und abschickt, so geschieht dies im Prinzip auf eigene Gefahr und im Vertrauen zum Programmierer. Theoretisch könnten alle Eingaben in eine Datenbank gespeichert oder auch sofort per Mail verschickt werden, ohne dass man das von außen erkennt. Auch wenn ich hiermit versichere, dass der angezeigte Quelltext mit dem tatsächlich ausgeführten Code übereinstimmt, dann ist das keine Garantie!


Valid XHTML   Valid CSS


Copyright © 2006 Lynax - All rights reserved. - Last change: 2007-07-31 03:20:24