Verschlüsselung -> wozu base64_decode?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschlüsselung -> wozu base64_decode?

    Hey Leute,


    ich habe auf PHP.net eine kleine Funktion gefunden, die ein Passwort für eine Datenbank verschlüsseln soll.

    PHP-Quellcode

    1. <?php
    2. //Function made by L2inside.org
    3. function encrypt($v1,$v2=''){
    4. $token = md5(sha1(md5(base64_decode($v1.$v2)).$v2).$v1);
    5. return $token;
    6. }?>

    Wozu nimmt der da ein base64_decode? Hat das einen besonderen Vorteil?

    Gruß,
    Erasel
    My lovely mister singing club...
  • Hi,

    Das Base64_decode() bewirkt einfach die Dekodierung des Strings in Base64. ^^
    Mit base64_encode() kannst du einen String verschleiern, mit base64_decode() dann wieder entschleiern. Als Verschlüsselung kann das aber nicht bezeichnet werden, schliesslich kann es jeder wieder ganz leicht Entschlüsseln.
    Wieso der da es aber genutzt hat kann ich dir nicht wirklich sagen, ich gehe ja davon aus dass der als Parameter übergebene String kein base64-Code ist.

    Um Passwörter für eine Datenbank zu verschlüsseln würde ich in etwa so eine Funktion nehmen:

    Quellcode

    1. <?php
    2. function encrypt($string)
    3. {
    4. $salt1 = 'o7awbt8ort8t84azt8t08c7t';
    5. $salt2 = 'iouebrzocuzbrzavwriuctb4o78';
    6. $salt3 = 'iuzbaeoiuabzoivwerztoivw';
    7. return sha1(md5($salt1.$string.$salt2).$salt3);
    8. }


    greez

    bitsnack
  • Hey,

    was ich sehe ist ein haufen Datensalat. Aber wozu? Er macht daraus ja wieder einen md5 am Ende...
    Das macht es zwar uninteressant für Rainbowtables. Aber da ist das auch ausreichend:

    Quellcode

    1. sha1(sha1($pw.$salt)).$salt;

    Ansonsten ist an der Funktion nichts sicherer als an meiner jetzigen.
    Ich hatte noch die Überlegung, ob es für BruteForce eine größere Zeitberechnung in Anspruch nimmt, wenn man base64 mit verwendet...

    Wahrscheinlich ist es aber einfach ein weiterer Schutz gegen Rainbowtables...

    EDIT:
    Ich habe gerade nochmal ein wenig mit base64 rum gespielt...

    PHP-Quellcode

    1. <?php
    2. $a = md5(base64_decode("a"));
    3. $b = md5(base64_decode("a"));
    4. $c = md5("");
    5. if($a == $b && $a == $c)
    6. {
    7. print "is it realy a supersecurepassword???";
    8. }
    9. ?>

    Uuups...
    Trifft in dem Fall nur zu, wenn man nur ein Zeichen hat -> aber es ist in meinen Augen auf alle fälle eine Schwäche...


    Gruß,
    Erasel
    My lovely mister singing club...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Erasel ()

  • Da gehts auch um den Einfallsreichtum.

    Die Standardmethoden sind:

    Quellcode

    1. md5();
    2. sha1();
    3. md5(md5());
    4. sha1(md5());
    5. md5(sha1());
    6. sha1(sha1());
    7. ... etc


    Da das kein Geheimnis ist, wirst du auch für die gängigen Verschachtelungen Rainbowtables finden, deswegen ist es besser wenn man zwischendurch einfach noch ein paar Unregelmäßigkeiten mit reinnimmt.
    Ich seh das alles nicht so kritisch, aber das ist ja jedem selber überlassen ;)
  • Ja, das stimmt wohl.
    Es hat mich halt gewundert... Naja, solange das Passwort nicht nur ein Zeichen lang ist, das es zu verschlüsseln gilt, ist es sicherlich eine nette Methode...

    Aber wenn man da schon in die Trickkiste greift, kann man ja schaun, was in PHP 5.3 alles dabei ist...

    "As of PHP 5.3, you have also: md2, ripemd256, ripemd320, salsa10, salsa20, snefru256 and sha224. ;)"

    Also, einmal bitte das Passwort gut salzen und durchnudeln...
    My lovely mister singing club...