Ankündigung

Einklappen
Keine Ankündigung bisher.

MD5-Code als Dezimalzahl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Maenniken
    hat ein Thema erstellt MD5-Code als Dezimalzahl.

    MD5-Code als Dezimalzahl

    Guten Tag!

    Ich suche eine Möglichkeit, einen MD5-Code in eine Dezimalzahl umzuwandeln. Wie ihr wisst, gibt die Funktion md5() eine Hexadezimalzahl aus. Mit hexdec() alleine lässt sich keine genaue Zahl ausgeben, da der MD5-Code zu lang ist.
    Also muss ich den MD5-Code in einzelne Teile zerlegen.

    Meine Frage nun:

    Was muss ich mit den zerlegten MD5-Teilen machen, damit hinterher die korrekte Zahl herauskommt. Sagen wir ich teile den Code in 8 Teile á 4 Zeichen und wandle diese mit hexdec() in Dezimalzahlen um. Was muss ich nun machen, damit ich das korrekte Ergebnis erhalte?

    Ich wäre sehr dankbar für Lösungsvorschlage

  • Chriz
    antwortet
    Ja die Zahl ist richtig:
    PHP-Code:
    <?php
    $number  
    "c4ca4238a0b923820dcc509a6f75849b";
    $decimal "0";
    bcscale(0);
    for (
    $x 0$i strlen($number) - 1$i >= 0; --$i, ++$x) {
        
    $hex bcpow("16"$x);
        
    $dec hexdec($number{$i});
        
    $tot bcmul($hex$dec);
        
    $decimal bcadd($decimal$tot);
    }
    echo 
    $decimal;
    ?>

    Suchst du vielleicht eher eine numerische Hashfunktion?
    PHP: crc32 - Manual

    Einen Kommentar schreiben:


  • Maenniken
    antwortet
    Hi! Ich hoffe ich habe jetzt alles richtig gemacht. Als Beispiel folgender MD5-Code:

    c4ca4238a0b923820dcc509a6f75849b

    ergibt als Dezimalzahl:

    261578874264819908609102035485573088411

    Ich glaube es stimmt, falls ihr kein Bock habt das nachzurechnen, egal, ich danke euch vielmals, ihr habt mir sehr geholfen

    Einen Kommentar schreiben:


  • freehawk
    antwortet
    Hallo,

    die Umwandlung ist eigentlich ganz einfach.

    Die Stellen des Hashes haben immer eine Potenz höher mit der Basis 16, beginnend von rechts. Ganz rechts ist 16 hoch 0, kinks davon ist 16 hoch 1 ....

    Du must einfach den Hash durchgehen und die Zahl wo an der Stelle steht mit der Wertigkeit multiplizieren und hinterher alles zusammenzählen.

    Wobei ein A einer 10 entspricht und ein B 11 ....

    Dann kannst dir einfach eine eigene Funktion schreiben.

    Gruß
    Markus

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Mit ein bißchen überlegen kommst Du auch drauf:

    Im Dezimalsystem wäre diese Umwandlung so:

    Ausgangsstring: 8544564
    Sagen wir, Du teilst in 4 Zeichen lange Stings: 8754 4564
    Dann wandelst Du um: 8754 4564
    Die Kombination ergibt sich als Potenz aus der Länge des Stringoffset und der zugrundeliegenden Zahlenbasis: 4 und 10, die Multiplikation erfolgt von links nach rechts
    Ergebnis: 4564 + 4^10 * 8754

    Hex Bsp1:

    AB
    A B
    10 11
    Offset 1 und Zahlenbasis 16
    11 + 16^1 * 10
    = 171

    Hex Bsp2:

    ABCD
    AB CD
    171 205
    Offset 2 und Zahlenbasis 16
    205 + 16^2 * 171
    = 43981

    Einen Kommentar schreiben:


  • Maenniken
    antwortet
    Ich bin nicht sicher ob das die richtige Funktion ist. Ich kapier nicht was die bewirken soll... was soll der zweite Parameter.

    Ein MD5-Code ist ja ein Hex-Code. Ich will den einfach nur als Dezimalzahl. Der Code ist aber zu lang um ihn einfach mit hexdec() auszugeben. Daher muss ich ihn zerstückeln und die einzelnen Teile später wieder zusammenfügen. Heraus kommt eine Dezimalzahl (als String). Ich will nun wissen, wie ich die Teile wieder zusammenfüge.

    Ich möchte den MD5-Code selbstverständlich nicht entschlüsseln. Ich brauche die Zahl, weil ich etwas in Dezimalzahlen verschlüsseln will.

    Einen Kommentar schreiben:


  • reliC
    antwortet
    also ich weiß immo nicht wieso du einen md5 code in eine dezimalzahl umwandeln möchtest, willst du den code dadurch entschlüsseln? Da das passwort bzw die verschlüsselung von einem String in per Hash schlüssel in diese Hexa zahlen umgewandelt wird kannst du ohne den richtgigen Hash key eh nicht wieder die ausgangslage zurückrechnen
    aber ich lass mich gerne von anderem überzeugen


    wobei ich noch gesehen habe auf PHP: md5 - Manual hat einer eine funktion geschrieben die das macht :>
    wenn ich mich nich irre....hier ma der code
    PHP-Code:
    <?php
    define
    ('HEX_CHARS',    '0123456789abcdef');
    define('BASE62_CHARS''0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
     
    /*********************************************/
    function ConvertFromArbitraryBase($Str$Chars)
    /*********************************************/
    {
        
    /*
            Converts from an arbitrary-base string to a decimal string
        */
        
        
    if (ereg('^[' $Chars ']+$'$Str))
        {
            
    $Result '0';
            
            for (
    $i=0$i<strlen($Str); $i++)
            {
                if (
    $i != 0$Result bcmul($Resultstrlen($Chars));
                
    $Result bcadd($Resultstrpos($Chars$Str[$i]));
            }
            
            return 
    $Result;
        }
        
        return 
    false;
    }
    ?>
    </span></span>

    Einen Kommentar schreiben:

Lädt...
X