CRAM-SHA1-Algorithmus gesucht
eddi
- programmiertechnik
Hallo,
bin auf der Suche nach dem CRAM-SHA1-Algorithmus; den für CRAM-MD5 habe ich bereits gefunden und umsetzen können:
# RFC 2195 iVm 2104
$p="passwort";
$digest="<00.1111@localhost>";
$p=(strlen($p)>64) ? pack('H32',md5($p)) : $p;
$p=(strlen($p)<64) ? str_pad($p,64,chr(0)) : $p;
$ipad=substr($p,0,64) ^ str_repeat(6,64);
$opad=substr($p,0,64) ^ str_repeat('\\',64);
$cram_md5=md5($opad.pack('H32',md5($ipad.$digest)));
Verhält es sich mit CRAM-SAH1 genauso, oder werden dort andere (Mindes-)Längen veranschlagt?
Gruß aus Berlin!
eddi
gudn tach eddi!
hey, ist das nicht ein doppelposting? ;-)
oder zaehlen bereits im archiv verschwundene nicht dazu?
ich habe uebrigens schon letztes mal danach gesucht und nix gefunden, ausser das, was in den von dir genannten rfcs steht, naemlich dass das mit sha1 auch gehe. aber da du das sicher auch schon gelesen hast, dachte ich, dass ich dir das bestimmt nicht erzaehlen brauche.
allerdings ich habe mich auch schon letztes mal gefragt, warum du
$p=(strlen($p)>64) ? pack('H32',md5($p)) : $p;
$p=(strlen($p)<64) ? str_pad($p,64,chr(0)) : $p;
schreibst statt
if(strlen($p)>64) $p=pack('H32',md5($p));
if(strlen($p)<64) $p=str_pad($p,64,chr(0));
die zuweisung $p=$p ist doch ueberfluessig...
prost
seth
Hallo,
if(strlen($p)>64) $p=pack('H32',md5($p));
if(strlen($p)<64) $p=str_pad($p,64,chr(0));
Du hast recht, es ist sogar der schnellere Weg :)
Gruß aus Berlin!
eddi
--
PHP: [PHP unter Linux installieren](http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Installation#UNIX-artige_Systeme), in Bearbeitung [PHP Konfigurieren](http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Konfiguration)
![](http://212.227.99.60/gentoo.jpg)
gudn tach!
es ist sogar der schnellere Weg :)
gut, dass du das gesagt hast. ich traute mich naemlich nicht.
prost
seth
Hi eddi
Such im Source Code nach "Reporter Registration". Dort solltest du den gewünschten Algorithmus finden.
HTH
Uwe
Portland, Oregon
Hallo Uwe,
ich danke Dir auf das herzlichste.
function cram_sha1($p,$digest){
# RFC 2104, 2195, 2202, 3174
if(strlen($p)>64) $p=pack('H40',sha1($p));
if(strlen($p)<64) $p=str_pad($p,64,chr(0));
$ipad=substr($p,0,64) ^ str_repeat('6',64);
$opad=substr($p,0,64) ^ str_repeat('\\',64);
return(sha1($opad.pack('H40',sha1($ipad.$digest))));
}
Diese Funktion ersetzt mir [link:http://de3.php.net/manual/en/function.hash-hmac.php@title=hash_hmac]('sha1',$digest,$p)
auf PHP-Installationen ohne die neue Hash-Erweiterung.
Gruß aus Berlin!
eddi