Anzeige

Von md5() 25 Strings abziehen

Von md5() 25 Strings abziehen | PSD-Tutorials.de

Erstellt von Mew, 12.10.2008.

  1. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Von md5() 25 Strings abziehen
    Hallo^^

    Mit md5() erzeugt man ja eine 32 lange Zeichenkette.
    Ich brauche aber nur eine zufällige 7 Zeichen lange Kette.
    Kann man von md5() die Strings abziehen oder gibt es da einen andere Befehl??

    Vielen Dank
     
    #1      
  2. eFoX

    eFoX Reiche Zahnarztgattin

    Dabei seit:
    18.04.2004
    Beiträge:
    620
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS4 Suite
    Kameratyp:
    EOS 450D + 70-200:4L + 28-75:2.8
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    md5hash in variable schreiben, hier $md5hash

    dann probier mal:
    $mymd5hashnew= substr($md5hash, 0 , strlen($md5hash)-25);

    (ich vermute mal anstatt noch die stringlänge minus 25 zu nehmen könnte auch nur gehen
    PHP:
    1. substr($md5hash, 0 , 6);
     
    #2      
  3. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    hmm irgendwie verstehe ich das nicht ganz, könntest du mir das ein bissel erläutern? Vielen Dank
     
    #3      
  4. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Das Script von eFox im Gesamtkontext:
    PHP:
    1.  
    2. $md5Val = md5('irgendwas');
    3. //Der 7stellige String
    4. $new = substr($md5Val, 0, 7);
    5. echo $new;
    6.  
     
    #4      
  5. eFoX

    eFoX Reiche Zahnarztgattin

    Dabei seit:
    18.04.2004
    Beiträge:
    620
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS4 Suite
    Kameratyp:
    EOS 450D + 70-200:4L + 28-75:2.8
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    0 bis 7 hast du aber 8 zeichen? daher dachte ich muss man 0 bis 6 gehen, weil nen string das erste zeichen bei 0 beginnt, oder ich irre.
     
    #5      
  6. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    nein nein, das hier darfst Du nicht mit Array-Indizes verwechseln.
    wenn Du den ersten Buchstaben aus einer Zeichenkette haben willst schreibst Du ja auch substr($string, 0, 1);
     
    #6      
  7. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    MD5 hat nichts mit Zufall zu tun, dafür gibt's Zufallsgeneratoren. MD5 ist ein kryptographischer Hash-Wert zur Sicherung von Verschlüsselungen und Zertifizierung von Transaktionen.
    Falls du einfach nur einen Zufallsstring suchst wird dir Google sicher prima helfen, für den Fall dass du weitere Wünsche hast, wie z.B. die Wahrscheinlichkeit bestimmter Zeichen zu beeinflussen, kann ich dir dafür auch ne Klasse schicken.

    Edit:
    substr($foo, $Anfangszeichenindex, $GewünschteLänge): so läuft's. Der dritte Parameter gibt nicht an, bei welchem Wert der Substring "abgeschnitten" wird, sondern wie lange der Ausgabestring (maximal) sein darf - und die Länge eines Wortes ändert sich nicht mit der Indizierung, selbst wenn man bei -pi anfängt.
     
    Zuletzt bearbeitet: 12.10.2008
    #7      
  8. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Das Eine schließt das Andere nicht aus.
     
    #8      
  9. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    hmm da ihr so viel zur Auswahl habt, sage ich euch mal für was ich das brauche:

    ich lade eine Datei hoch mit dem normalen dateinamen. Damit es keine doppelten namen gibt, wird am Ende _1234 ein _ und eine 4 stellige zufalls Zahl angehängt. Nun meine Frage wie bekomme ich die Zufallszahl hin???
     
    #9      
  10. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Mein Ansatz wäre:

    PHP:
    1. $file_exists = false;
    2. while(!$file_exists){
    3.   $suffix = substr(uniqid(md5(microtime())), 0, 4);
    4.   #$oldFileName muss natürlich mit der originalen Dateinamen-Variable ausgetauscht werden!
    5.  $new_FileName = $oldFileName.'_'.$suffix;
    6.   if(!file_exists($new_FileName)){
    7.     //Start Anweisung zum Speichern!
    8.    
    9.     //Ende Anweisung zum Speichern
    10.     //Die Zeile hier drunter nicht löschen
    11.     $file_exists = true;
    12.   }
    13. }
    Edit: Bedingung geändert.
     
    Zuletzt bearbeitet: 12.10.2008
    #10      
  11. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    cool danke klappt.
     
    #11      
  12. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    andere Variante wäre ohne MD5:
    PHP:
    1.  
    2. $temp = array_merge( range(1,9), range('a','z') );
    3. srand ( (float)microtime() * 1000000);
    4. shuffle ( $temp );
    5. $out = '';
    6. $cc = 0;
    7. foreach ( $temp as $v ) {
    8.  if ($cc++ >= 7) { break; }
    9.  $out .= $v;
    10. }
    11. echo $out;
    12.  
     
    #12      
  13. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    danke auch dir und den anderen usern.
     
    #13      
  14. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Also wenn man diesen Thread durch hat, ist man entweder völlig balla oder man nimmt die zwei einzigen Antworten (blackout und CIX88), welche was taugen und verwendet diese entsprechend. Der Rest ist Müll - und sorry, wenn sich nun der ein oder andere auf den Schlipps getreten fühlt, aber denkt mal selbst über das nach, was als Antworten hier so steht.
     
    #14      
  15. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Es ist nicht meine Aufgabe das Grundproblem des Lösungsansatzes des Threaderöffners zu korrigieren, es kann ja diverse Gründe haben, warum er gerade md5 als "Zufallsgenerator" benutzen möchte, zB Verständnis.
    Mein Lösungsansatz wäre es auch nicht gewesen, aber jedem wie er will, daher ist es ganz sicherlich nicht Müll, was hier zusammengetragen wurde, nur weil dir der Lösungsweg nicht als sinnvoll erscheint. Das Ergebnis hat den selben Effekt, wie eine -aus dem Aspekt der Zufallszahl gesehenen- Lösung. Mehr ist nicht wichtig.
    Viele Wege führen nach Rom. Und manche halt über md5 :rolleyes:
     
    Zuletzt bearbeitet: 16.10.2008
    #15      
  16. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Naja alles schön gut, aber MD5 alleine macht keine Zufallsstrings.
    Also MUSS man andere Wege gehen, womit sich dadurch der Umweg über MD5 wieder aufhebt.
    Du kannst ja gerne die Zufallsrate testen:
    PHP:
    1.  
    2. echo substr(MD5(MD5(MD5(MD5(MD5(time()))))),0,7);
    3.  
    :)
     
    #16      
  17. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Hab das mal ausprobiert und dachte schon jetzt kommt irgend was ganz tolles unerwartetes mit MD5, aber da waren nur wirre Zeichenketten :(
     
    #17      
  18. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Ich habs noch nicht mit 1000x MD5 probiert ... sollte aber dann gehen :)
    Keine Ahnung ob dann PHP versagt :)
     
    #18      
  19. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Sarkastische Kommentare sind hier fehl am Platz, denn wenn irgendwer das Beispiel mit uniqid(md5(microtime))) getestet hätte, hätte die Person gesehen, dass dort immer etwas "zufälliges" (In diesem Fall halt nicht immer gleich) bei rumkommt. Und sicherlich muss man nicht den Umweg über MD5 gehen, aber es war vom Threaderöffner so gewünscht, also habe ich das in dem Beispiel einfach mit eingebaut, habe ich aber auch schon vorher beschrieben.
     
    Zuletzt bearbeitet: 16.10.2008
    #19      
  20. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Von md5() 25 Strings abziehen
    AW: Von md5() 25 Strings abziehen

    Also Christian, ich versuche es mal ganz vernünftig.

    Wenn z.B. ein Autofahrer in eine Werkstatt kommt und sagt, dass seine Bremse im Auto nichts taugt - dieser Autobesitzer/fahrer aber keine Bremse mehr möchte, weil er diese im Detail nicht kennt, dann geht die Werkstatt bestimmt nicht hin und gibt ihm für die nächste Fahrt einen Anker mit einer entsprechenden Schnur daran!

    Ich hoffe du hast das Beispiel verstanden. md5() hat eine Funktionsberechtigung in PHP in Form einer Verschlüsselng. Genauso gibt es Funktionen zur erzeugung von Zufallswerten und davon mind. 4 Funktionen in PHP. Und nur weil jemand etwas wünscht, besagt das noch lange nicht, dass dies korrekt sein muss oder das Fehlwissen unterstützt werden muss.

    Edit:
    Was besagt dieses aka in deiner Signatur?
     
    #20      
x
×
×
teststefan