MD5 und SHA (allgemeine Informationen)

Das Speichern von sensiblen Benutzerdaten in Prüfsummenform ist nicht nur ein Sicherheitsaspekt, sondern auch in gewisser Weise ein Indiz für den Datenschutz, also ein Vertrauensbeweis gegenüber dem Benutzer. Oder würdest du dich wohler fühlen, wenn dein Passwort auf dieser Website in Reinform gespeichert wird?
 
Ich finde, das Speichern von Hashes rentiert sich nur bei wirklich sicherheitsrelevanten Anwendungen. Bei nicht kritischen Seiten wie dieser z.B. fände ich es günstiger, wenn die Passwörter in Reinform gespeichert würden, denn wenn ich meins einmal vergessen sollte, so könnte es mir einfach wieder zugeschickt werden. Bei einem Hash bekomme ich ein neues Passwort, das ist weniger benutzerfreundlich.

-Gawayn
 
Das Problem ist nur, dass der Mensch faul und vergesslich ist und daher oft nur ein oder nur wenige Passwörter bei allen möglichen Dienstanbietern (E-Mail-Anbieter, eBay, Foren, Online-Banking, etc.) benutzen. Daher werden sich wahrscheinliche viele wohler fühlen, wenn sie wissen, dass die Passwörter „verschlüsselt“ oder kryptischen Form verwaltet werden.
 
In PHP eingebaut ist nur SHA1. Wenn du SHA2 willst, musst du dir den Code dafür entweder irgendwo besorgen oder ihn selbst schreiben nach dem Algorithmus. Ich habe den Code nicht. Der Algorithmus ist öffentlich, von daher wirst du sicherlich fündig werden, wenn du die Suchmaschinen bemühst.
-Gawayn
 
Wenn jemand das mal in PHP umsetzt würde ich mich freuen, wenn er das mal public machen könnte. Gibts nur in c bzw. c++ und davon hab ich keinen Plan, sodass ich das umcoden könnte.
 
Hallo

ist da evt schon jemand weitergekommen? suche noch immer eine SHA-2 Lösung für PHP.

wäre cool, wenn wmir jemand helfen könnte.

greetz
 
:google: :google: :google: :google:
[phpf]sha1[/phpf]
4. Kommentar:
Wanna use SHA-2 algorithm? Try this:

Download Tar-Ball from http://www.adg.us/computers/sha.html
Compile (may occur some warnings) and test it:

cc -O2 -DSHA2_UNROLL_TRANSFORM -Wall -o sha2 sha2prog.c sha2.c
./sha2test.pl

Copy it to /usr/local/bin/ (don't forget to check permissions)

Here are two functions that could be used with:

function sha2($bits, $string){
$sha2bin="/usr/local/bin/sha2";
$echocmd="echo";
if(!in_array($bits, array(256, 384, 512)))return(false);
$r=exec($echocmd." ".escapeshellarg($string)."|".$sha2bin." -q -".$bits, $sha2);
return($sha2[0]);
}

function sha2_file($bits, $filename){
$sha2bin="/usr/local/bin/sha2";
if(!in_array($bits, array(256, 384, 512)))return(false);
if(!file_exists($filename)||!is_readable($filename))return(false);
$r=exec($sha2bin." -q -".$bits." ".escapeshellarg($filename), $sha2);
return($sha2[0]);
}

and use it like below:

<?php
$str = 'apple';
if (sha2(256, $str) === '303980bcb9e9e6cdec515230791af8b0ab1aaa244b58a8d99152673aa22197d0') {
echo "Would you like a green or red apple?";
exit;
}
?>
 
Laut diesem kurzen Benchmark-Script ist da PHP die schnellere Variante. Dabei hab ich sogar noch einen Teil des fuer MySQL benoetigten Codes aus der Zeitmessung herausgenommen.
PHP:
<?php
function calctime($start,$end)
{
	list($msec,$sec)=explode(' ',$start);
	$start=(float)$msec+(float)$sec;
	list($msec,$sec)=explode(' ',$end);
	$end=(float)$msec+(float)$sec;
	$time=($end-$start);
	return $time;
}

echo 'PHP: ';
$start=microtime();
sha1('Hallo Du da!');
$end=microtime();
echo (calctime($start,$end)*1000000).'<br>';
echo 'MySQL: ';
$db=mysql_connect('','','');
$start=microtime();
$results=mysql_query("select sha1('Hallo Du da!')",$db);
$end=microtime();
mysql_close($db);
echo (calctime($start,$end)*1000000).'<br>';
?>
PHP: 49.1142272949
MySQL: 159.978866577
Zeitangaben muessten, wenn ich mich nicht vertan hab, in Mikrosekunden sein.
 
Zurück