Programmieraufgabe zur Nacht

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

  • Gut ich hab die Lösung auch soweit... Muss sie noch in PHP umsetzen

    Kommentar


    • Original geschrieben von Schanz
      Gut ich hab die Lösung auch soweit... Muss sie noch in PHP umsetzen
      Da häng ich gerade ^^...
      Bin leider kein PHP-Pro^^

      Kommentar


      • *hust* ich hab derweil aufgegeben^^

        Warte auf die nächste, für mich machbare, Aufgabe^^

        Kommentar


        • edit: lasst euch doch auch mal was von nem jüngeren gesagt sein^^ Hashs zurückrechnen generell nicht eindeutig möglich^^
          Du bist nicht der Jüngste hier.

          Ich habs kurz für bis zu 9 Zeichen gemacht, wie das darüber hinaus geht, schau ich mir morgen an.
          Assembler ist eine Methode,
          Programme, die zu langsam laufen,
          so umzuschreiben,
          dass sie überhaupt nicht mehr laufen.

          Kommentar


          • also bis 9 zeichen ists ja einfach, aber dann... keine ahnung mehr
            Freedom is a state of mind. Not a state in which we live.

            troxdev.ch | animefieber

            Kommentar


            • Ich hab auch nie gesagt, dass die Hashes zurückgerechnet werden sollen, sondern der Algorithmus. Das erstmal für die Besserwisser. Darüberhinaus ist der Algorithmus auch nicht besonders gut.

              Kleiner, nicht geplanter Tipp: Ich hab hier schonmal einen Hash-Algorithmus gepostet, der jetzige arbeitet sehr ähnlich. Wenn auch mit ein zwei entscheidenden Unterschieden.

              @Schanz: Ich frag mich, wie du die Lösung haben willst, ohne diese implementiert zu haben?! Wie hast du das getestet?
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • Original geschrieben von unset
                Ich hab auch nie gesagt, dass die Hashes zurückgerechnet werden sollen, sondern der Algorithmus. Das erstmal für die Besserwisser. Darüberhinaus ist der Algorithmus auch nicht besonders gut.

                Kleiner, nicht geplanter Tipp: Ich hab hier schonmal einen Hash-Algorithmus gepostet, der jetzige arbeitet sehr ähnlich. Wenn auch mit ein zwei entscheidenden Unterschieden.

                @Schanz: Ich frag mich, wie du die Lösung haben willst, ohne diese implementiert zu haben?! Wie hast du das getestet?
                Nun ja.. sagen wir mal ich HOFFE die Lösung zu haben... bin aber eigentlich recht zuversichtlich...
                WIE ich das dann hinbekommen habe erzähl ich wenn es soweit ist (oder auch nicht)

                // Edit: BLAAAAAAAA ich liege KOMPLETT Falsch...
                Ich höre auch auf jetzt ^^ Ich komme leider nicht drauf :P Vieleicht setz ich mich heute Nacht nochmal dran .... Vieleicht hilft das was ich habe jemandem weiter:

                PHP-Code:
                <?php
                if(!isSet($_GET['string']) || empty($_GET['string'])) die();

                /*
                ** Konvertiert ein Zeichen in den Code
                ** Zuerst wird der ermittelte ASCII Wert des Zeichens durch 9 geteilt!
                ** Sollte das Ergebniss keine Nachkommastellen haben ist die Code "9", andernfalls traegt der den Wert der 1. Nachkommastelle
                */
                function chrToCrypt($chr)
                {
                  
                $code ord($chr)/9;
                  
                $code is_int($code) ? "9" substr($code, (strpos($code".")+1), 1);
                  
                  return 
                $code;
                }

                /*
                ** Konvertiert einen String in einen Hash-Code
                ** Wie genau muesst ihr euch schon selber ansehen
                */
                function cryptString($str)
                {
                  
                // Der String wird alle 9 Zeichen 'geteilt' und in ein Array geschrieben
                  
                $splitted str_split($str9);
                  
                  
                // Ein String mit 10 Zeichen wuerde 2 Arrays fuellen, das 2. jedoch nur mit einem Zeichen
                  // Daher wird das letzte Array 'aufgefuellt' und zwar indem der String wiederholt wird
                  
                $entry count($splitted)-1;
                  
                $splitted[$entry] = substr(str_repeat($splitted[$entry], 9), 09);
                  
                  
                // Nun wird jeder einzelne Buchstabe durch die entsprechende Code Ziffer ersetzt
                  
                foreach($splitted as $string)
                  {
                    
                $cplstring "";
                    
                    for(
                $i=0;$i<=8;$i++)
                    {
                      
                $chr substr($string$i1);
                      
                $cplstring .= chrToCrypt($chr);
                    }
                    
                    
                $crypted[] = $cplstring;
                  }
                  
                  
                  
                  return 
                $crypted;
                }

                print_r(cryptString($_GET['string']));
                ?>
                Zuletzt geändert von Schanz; 04.07.2008, 19:35.

                Kommentar


                • Hallo,

                  hier ist der Algorithmus:

                  Testen: http://blacksoul.redio.de/phpr/unset...p?string=HALLO

                  PHP-Code:
                  <?php
                  function cryptbis9($string){

                     
                  $crypted "";

                     for(
                  $i=0;$i<strlen($string);$i++){

                         
                  $sign ord($string{$i}) % 9;
                         
                  $sign = ($sign == 0) ? $sign;

                         
                  $crypted .= $sign;

                     } 
                  // for

                     
                  if(strlen($crypted) < 9$crypted substr(str_repeat($crypted,9),0,9);

                     return 
                  $crypted;

                  //cryptbis9

                  function cryptab10($string){

                     
                  $crypted "";

                     
                  $tupellength floor((strlen($string) / 9)+1);
                     if(
                  floor(strlen($string)/$tupellength) < 9){
                      
                  $addstring = (((floor(strlen($string)/$tupellength)) * $tupellength)-(strlen($string)%$tupellength));
                      
                  $string .= substr($string,0,$addstring);
                     }      
                  //if


                     
                  for($i=0;$i<(strlen($string)/$tupellength);$i++){
                        
                  $zcrypted 0;
                        
                  $k $i*$tupellength;

                        for(
                  $j=0;$j<$tupellength;$j++){
                           
                  $sign ord($string{($k+$j)}) % 9;
                           
                  $sign = ($sign == 0) ? $sign;

                           
                  $zcrypted += $sign;
                        }   
                  //for

                        
                  $zcrypted $zcrypted 9;
                        
                  $zcrypted = ($zcrypted == 0) ? $zcrypted;

                        
                  $crypted .= (string) $zcrypted;

                     }   
                  //for

                     
                  if(strlen($crypted) < 9$crypted substr(str_repeat($crypted,9),0,9);

                     return 
                  $crypted;
                  }   
                  //cryptab10


                  if(isset($_GET['string'])) echo (strlen($_GET['string']) > 9) ? cryptab10($_GET['string']) : cryptbis9($_GET['string']);

                  ?>
                  @unset: War das nun gefordert, oder hab ich dich falsch verstanden?

                  Kommentar


                  • @unset, meintest du diesen post aus dem Forum JavaScript:

                    PHP-Code:
                    function hash(Source) {
                        var 
                    HashBase 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
                        var 
                    WorkingSource Source;
                        var 
                    Hash '';
                        
                        var 
                    Counter 0;
                        while((
                    WorkingSource.length 32) != 0) {
                            if(
                    Counter WorkingSource.length) {
                                
                    Counter 0;
                            }
                            
                            
                    WorkingSource WorkingSource WorkingSource.substr(Counter1);
                            
                            
                    Counter++;
                        }
                        
                        while((
                    WorkingSource.length 32) != 0) {
                            
                    WorkingSource WorkingSource.substr(0WorkingSource.length 1);
                        }
                        
                        var 
                    CharsPerPart WorkingSource.length 32;
                        for(var 
                    032i++) {
                            var 
                    SubPart WorkingSource.substr(i*CharsPerPartCharsPerPart);
                            var 
                    PartCode 0;
                            for(var 
                    0SubPart.lengthj++) {
                                
                    PartCode PartCode HashBase.indexOf(SubPart.substr(j1));
                            }
                            
                            if(
                    != 0) {
                                
                    PartCode PartCode*i;
                            }
                            
                            
                    PartCode PartCode HashBase.indexOf(Hash.length1) * Source.length;
                            
                            while(
                    PartCode HashBase.length) {
                                
                    PartCode PartCode HashBase.length;
                            }
                            
                            while(
                    PartCode 0) {
                                
                    PartCode++;
                            }
                            
                            if(
                    HashBase.substr(PartCode1) == 'undefined') { 
                                
                    Hash Hash HashBase.substr(i1);
                            } else {
                                
                    Hash Hash HashBase.substr(PartCode1);
                            }
                        }
                        
                        return 
                    Hash;

                    also den hier? http://www.php-resource.de/forum/sho...highlight=hash


                    und wenn das hier fertig ist, also schätzungsweise Monat morgen, kannst du hier dann deinen Code mal posten, würde mich echt mal interressieren =)
                    Zuletzt geändert von ; 04.07.2008, 19:42.

                    Kommentar


                    • Herylichen Glueckwunsch Blackgreetz. Da ist mir doch tatsaechlich vor Schreck grade die Festplatte weggeballert - bin grade auf nem live debian. Werde, wenn hier alles wieder geht, meinen Code posten. Zwischenzeitlich kannst du ja die naechste Aufgabe formulieren ..
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • Was für ein Schreck?

                        Hmm ... ja ... Aufgabe -g-
                        Ich bin nicht so wirklich kreativ..
                        Versuch mir bis morgen Mittag was auszudenken, ansonsten sag ich bescheid, dass jmd. anderes kann^^..

                        mfg

                        Kommentar


                        • Nenene, so geht das nicht. Du musst dir schon selbst was ausdenken!

                          Ach ja, hier meine Implementation:

                          PHP-Code:
                          <?php

                              
                          function hashMe($sToHash) {
                                  if(
                          strlen($sToHash) == 0) {
                                      return 
                          false;
                                  }
                                  
                                  if(
                          strlen($sToHash) < 9) {
                                      
                          // Weniger als 9 Zeichen
                                      
                          $iRound 0;
                                      while(
                          strlen($sToHash) < 9) {
                                          
                          $sToHash.= $sToHash[$iRound];
                                          
                          $iRound++;
                                      }
                                  } elseif(
                          strlen($sToHash) == 9) {
                                      
                          // Genau 9 Zeichen
                                  
                          } elseif(strlen($sToHash) > 9) {
                                      
                          // Mehr als 9 Zeichen
                                      
                          $iRest strlen($sToHash) % 9;
                                      
                          $iToFill $iRest;
                                      for(
                          $i 0$i $iToFill$i++) {
                                          
                          $sToHash.= $sToHash[$i];
                                      }
                                  }

                                  
                          // Chunk-Size
                                  
                          $iChunkSize strlen($sToHash) / 9;

                                  
                          // Wieviel Chunks haben wir
                                  
                          $iChunkCount strlen($sToHash) / $iChunkSize;

                                  
                          // Chunks berechnen
                                  
                          for($i 0$i $iChunkCount$i++) {
                                      
                          // Chunk holen
                                      
                          $sChunk substr($sToHash$i $iChunkSize$iChunkSize);
                                      
                          $iDigit 0;

                                      
                          // Direkten Chunkwert ermitteln
                                      
                          for($j 0$j strlen($sChunk); $j++) {
                                          
                          $iDigit $iDigit ord($sChunk[$j]);
                                      }

                                      while(
                          $iDigit >= 10) {
                                          
                          $iDigit quersumme($iDigit);
                                      }

                                      
                          // Speichern
                                      
                          $iHash.= $iDigit;
                                      unset(
                          $iDigit);
                                  }

                                  
                          // Ausgeben
                                  
                          return $iHash;
                              }

                              function 
                          quersumme($iZahl) {
                                  
                          $sZahl = (string) $iZahl;
                                  for(
                          $i 0$i strlen($sZahl); $i++) {
                                      
                          $iOutput $iOutput + (int) $sZahl[$i];
                                  }
                                  return 
                          $iOutput;
                              }

                          ?>
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • Ging es jetzt nur um das Knacken des Algos? Schade, war leider abwesend. Gucke mir Blackgreetz's Lösung nicht an, vielleicht mach ich's ja noch mal aus Langeweile
                            Aber her mit der nächsten Aufgabe ^^

                            Kommentar


                            • Menno, da ist einmal nen Freund da und man hat nicht so viel Zeit zum coden und schon ist die schöne Aufgabe gelöst, bevor man richtig anfangen kann.
                              Naja, her mit der nächsten Aufgabe^^
                              Assembler ist eine Methode,
                              Programme, die zu langsam laufen,
                              so umzuschreiben,
                              dass sie überhaupt nicht mehr laufen.

                              Kommentar


                              • danke für deinen code unset, denke mal werde ihn villeicht etwas Modufizierunund nutzen =) (muss ich dir dann iwas wie ne Lizensgebühr zahlen )

                                Lg,
                                Bueddl

                                Kommentar

                                Lädt...
                                X