AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein myCoder-Funktion aus der CodeLib in php
Thema durchsuchen
Ansicht
Themen-Optionen

myCoder-Funktion aus der CodeLib in php

Offene Frage von "Logic2"
Ein Thema von Logic2 · begonnen am 3. Mär 2009 · letzter Beitrag vom 3. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Logic2

Registriert seit: 6. Feb 2009
4 Beiträge
 
#1

myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 20:59
Hallo,

ich habe versucht die recht einfache Verschlüsselung von MaBuSE in php umzusetzen.
Ist mir aber scheinbar nicht so gelungen.

Hier nochmal der Link zur Originalfunktion in CodeLib.

Hier mein php Code:


Code:
   function myCoder ($s, $password, $decode){      
      if ($decode==true) $x=-1; else $x=1;
      srand($password);
      $result='';
      for($i = 1; $i < strlen($s)+1; $i++){
         $c=ord($s{$i});
         
         if (($c>=32) AND ($c<=122)){
            $c=$c+rand(0,90);            
            if (($c<32) OR ($c>122))
               $c=$c-($x*91);         
         }      
         $result.=chr($c);
      }      
      return $result;
   }
   
   echo myCoder('jS#)P',1,true);

Also als Ergebnis sollte 'hallo' herauskommen, stattdessen bekomme ich: �Fp��



'hallo' habe ich mir von der Delphi funktion mit dem "Passwort" 1 verschlüsseln lassen -> jS#)P

Wäre offen für ein bißchen Input.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:06
Ich habe jetzt nicht so ausführlich geschaut, aber einige Dinge fielen mir direkt auf.
  • In PHP beginnt ein String bei 0
  • Auch in PHP prüft man nicht auf true, so wie es in MaBuSEs Code auch richtig ist
  • Was ist das für Ein Konstrukt: $s{$i} ?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:08
Hi!

Wenn ich den Teil hier richtig sehe

Code:
if (($c>=32) AND ($c<=122)){
            $c=$c+rand(0,90);          
            if (($c<32) OR ($c>122))
               $c=$c-($x*91);        
         }
dann sieht er nicht so aus, wie der in der Codelib. Im ersten Fall scheint das x zu fehlen, im zweiten steht was von 91 statt 90?!


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:16
Zitat von fkerber:
dann sieht er nicht so aus, wie der in der Codelib. Im ersten Fall scheint das x zu fehlen, im zweiten steht was von 91 statt 90?!
Lies mal MaBuSEs verlinkten Post.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Logic2

Registriert seit: 6. Feb 2009
4 Beiträge
 
#5

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:20
Ja das mit der 91 hatte ich auch erst überlesen.

@ Valle:

Sicher, dass der String bei 0 beginnt?

Wenn man z.b. die Funktion strpos nimmt, die liefert als Rückgabewert, sollte die Suchstring nicht gefunden werden, false.
Welches auch als 0 interpretiert werden kann (siehe Doku). Wie kann man dann unterscheiden, ob der Suchstring ab der ersten Stelle beginnt (also laut dir 0) oder gar nicht vorkommt?
Also laut Doku gibt strpos auch einen Boolean Wert zurück, wie kann das sein, sollte es keine boolean geben?

das {} gibt den char an der Stelle des Strings zurück, analog zum Delphi []

teste mal:

$hallo='test';
echo $hallo{1};

liefert als Ergebnis t, auch ein Indiz dafür, dass Strings auch mit 1 anfange. Außer dies ist alles eine Ausnahme.

Kann auch sein, dass ich das alles falsch sehe Hab mir ja alles per Learning by doing beigebracht.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:26
Ja, ich bin mir ganz hundert-prozentig sicher, dass der String bei 0 beginnt. Von dem {}-Syntax habe ich noch nie was gehört, trotz jahrelangem PHP. Ich benutze dafür normalerweise substr oder einfach den gleichen Syntax wie in Delphi: $s[$i] oder substr($s, $i, 1);

Den Fehler habe ich jetzt übrigens gefunden. Das Problem ist, dass der PHP-Zufallszahlen-Generator ein anderer ist, wie der von Delphi. Das heißt, dass es sehr schwierig werden könnte, diesen Algorithmus zu übersetzen. Hier hast du trotzdem noch meine Version:

Code:
function myCoder($s, $password, $decode)
{     
  $x = ($decode) ? -1 : 1;
  mt_srand($password); # oder srand()
  $result = '';
  for($i = 0; $i < strlen($s); $i++) {
    $c = ord($s[$i]);
    if (($c >= 32) && ($c <= 122)) {
      $c = $c + ($x * mt_rand(0, 90)); # oder rand()
      if (($c < 32) || ($c > 122))
        $c = $c - ($x*91);
    }
    $result .= chr($c);
  }     
  return $result;
}
Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:31
Hi!

Ach scrollen, um alles zu lesen ist uncool
Sorry..

Ich würde aber auch sagen, dass in PHP Strings 0-basiert sind:

Code:
Beispiel

<?php

$zeichenkette = "mineralwasser";

echo substr ($zeichenkette,0,6)."
";

echo substr ($zeichenkette,1,6)."
";

echo substr ($zeichenkette,-3,2);

?>
Ergebnis:

minera
ineral
se
Quelle: http://www.phpbox.de/php_befehle/substr.php



Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Logic2

Registriert seit: 6. Feb 2009
4 Beiträge
 
#8

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:32
dann sag ich mal danke - immerhin hab ich jetzt nen bisl neues zur Syntax gelernt
Dann ist {} eben bisl komisch

Dass php nen anderen Zufallsgenerator hat, habe ich gar nicht bedacht mhh kennst du vll. eine ähnliche Funktion, die ich benutzen kann ohne blowfish module in Delphi zu integrieren.

Also ich möchte strings, die man Delphi-Programm erzeugt per POST oder GET an den script übergeben, aber hätte ungerne, dass man es lesen kann. Es sollte aber immerhin mehr als nur base64 oder so sein.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#9

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:34
Zitat von fkerber:
Ach scrollen, um alles zu lesen ist uncool
Sorry..
Ich hatte es auch schon oben in der Liste stehen.

Übrigens, ich habe gerade das mit dem {}-Syntax getestet. Und der Code funktioniert tatsächlich. Wusste echt nicht, dass es noch grammatikalische Sinnlosigkeiten in PHP gibt, die ich noch nicht kenne. *g* Ich bleib trotzdem bei substr oder [].

Zitat von Logic2:
Dass php nen anderen Zufallsgenerator hat, habe ich gar nicht bedacht mhh kennst du vll. eine ähnliche Funktion, die ich benutzen kann ohne blowfish module in Delphi zu integrieren.

Also ich möchte strings, die man Delphi-Programm erzeugt per POST oder GET an den script übergeben, aber hätte ungerne, dass man es lesen kann. Es sollte aber immerhin mehr als nur base64 oder so sein.
Nimm einfach einen anderen einfachen Algorithmus, der nicht auf den Zufallszahlengenerator basiert. Den Generator von Delphi nachzumachen würde ich als viel zu komplex einschätzen. Wie wäre es mit XOR? Letztlich ist es eigentlich egal, denn unsicher ist es in jedem Fall.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Logic2

Registriert seit: 6. Feb 2009
4 Beiträge
 
#10

Re: myCoder-Funktion aus der CodeLib in php

  Alt 3. Mär 2009, 21:43
Hab jetzt einfach mal gegoogelt.
Verstehe bei der unteren Funktion eigentlich alles bis auf das ^- Zeichen, ist das sowas wie power?

Wie einfach ist die denn zu entschlüsseln?

Code:
<?php
$klartext = "Dies ist der Klartext";

$passwort = "passwort";


function encode($key, $text)
{
    $l_k = strlen($key);
    $l_t = strlen($text);
   
    if($l_k == 0) return $text; // Ohne Key keine Verschlüsselung!!!
   
    $encoded = "";
    $k = 0; // Position im Key
    for($i=0; $i<$l_t; $i++)
    {
        if($k > $l_k) $k = 0; // Wenn ende des keys, dann wieder von vorne
        $encoded .= chr(ord($text[$i]) ^ ord($key[$k])); // Verschlüsselung
        $k++;
    }
    return $encoded;
}

function decode($key, $chiffre)
{
    $l_k = strlen($key);
    $l_t = strlen($chiffre);
   
    if($l_k == 0) return $text; // Ohne Key keine Verschlüsselung!!!
   
    $decoded = "";
   
    $k = 0; // Position im Key
    for($i=0; $i<$l_t; $i++)
    {
        if($k > $l_k) $k = 0; // Wenn ende des keys, dann wieder von vorne
        $decoded .= chr(ord($chiffre[$i]) ^ ord($key[$k])); // Verschlüsselung
        $k++;
    }
   
    return $decoded;
}

$encoded = encode($passwort, $klartext);
$decoded = decode($passwort, $encoded);

echo '

[b]Klartext:[/b] '.$klartext.'</p>';
echo '

[b]Schl&uuml;ssel:[/b] '.$passwort.'</p>';
echo '

[b]verschl&uuml;sselt:[/b] '.$encoded.'</p>';
echo '

[b]Klartext, mit decode():[/b] '.$decoded.'</p>';
?>
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz