eddi: CRAM-SHA1-Algorithmus gesucht

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

  1. 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

    1. 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)
      
      1. gudn tach!

        es ist sogar der schnellere Weg :)

        gut, dass du das gesagt hast. ich traute mich naemlich nicht.

        prost
        seth

  2. Hi eddi

    http://razor.sourceforge.net/

    Such im Source Code nach "Reporter Registration". Dort solltest du den gewünschten Algorithmus finden.

    HTH

    Uwe
    Portland, Oregon

    1. 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