Avatar billede emileej Nybegynder
09. juni 2003 - 09:12 Der er 4 kommentarer og
2 løsninger

Bøvl med simpel encryption / decryption

Jeg skal bruge noget kryptering og eftersom mcrypt ikke er installeret på min server, har jeg lavet et meget simpel sæt funktioner til det.
Problemet er bare at det jeg krypterer ikke overlever helt, men efter følgende system (j for ja=overlever og n for nej=bliver til juks):

jjjjnnjjjjnnjjjjnnjjjjnn...

Min kode:
------------------------------------------------------------

    $maxChr=255;
    function add($chr1, $chr2){
        $num=ord($chr1)+ord($chr2);
        if($num > $maxChr)
            $num-=$maxChr;
        return chr($num);
    }

    function sub($chr1, $chr2){
        $num=ord($chr1)-ord($chr2);
        if($num < 0)
            $num+=$maxChr;
        return chr($num);
    }

    function encrypt($data, $key){
        $encrypted=$data;
        $k=0;
        for($i=0;$i < strlen($data);$i++){
            if((++$k) > strlen($key))
                $k=1;
            if((++$step) > 5)
                $step=1;
            switch($step){
                case 1:
                    $encrypted[$i]=add($data[$i],strlen($key));
                break;
                case 2:
                    $encrypted[$i]=sub($data[$i],strlen($key));
                break;
                case 3:
                    $encrypted[$i]=add($data[$i],$key[$k]);
                break;
                case 4:
                    $encrypted[$i]=sub($data[$i],$key[$k]);
                break;
                case 5:
                    $encrypted[$i]=sub($key[$k],$data[$i]);
                break;
                default:
                break;
            }
        }
        return $encrypted;
    }

    function decrypt($encrypted, $key){
        $data=$encrypted;
        $k=0;
        for($i=0;$i < strlen($encrypted);$i++){
            if((++$k) > strlen($key))
                $k=1;
            if((++$step) > 5)
                $step=1;
            switch($step){
                case 1:
                    $data[$i]=sub($encrypted[$i],strlen($key));
                break;
                case 2:
                    $data[$i]=add($encrypted[$i],strlen($key));
                break;
                case 3:
                    $data[$i]=sub($encrypted[$i],$key[$k]);
                break;
                case 4:
                    $data[$i]=add($encrypted[$i],$key[$k]);
                break;
                case 5:
                    $data[$i]=add($key[$k],$encrypted[$i]);
                break;
                default:
                break;
            }
        }
        return $data;
    }

------------------------------------------------------------

E-)mil
Avatar billede myplacedk Nybegynder
09. juni 2003 - 12:29 #1
Efter at have kigget på de første 4 linjer ser det ud til, at du gerne vil have $maxChr til at være global i nogle af dine funktioner...
Avatar billede emileej Nybegynder
09. juni 2003 - 12:38 #2
Det er korrekt. Så'n er det at rode med for mange programmeringssprog...
However: Fejlen er der stadigt - nøjagtigt det samme.
Avatar billede tipsen Nybegynder
09. juni 2003 - 13:43 #3
Hvis du ikke nødvendigvis vil opfinde den dybe tallerken igen, ligger der nogle færdige klasser i PEAR: http://pear.php.net/packages.php?catpid=6&catname=Encryption
Avatar billede emileej Nybegynder
18. juni 2003 - 09:49 #4
Den udvidelse er ikke indstalleret på serveren og bliver det nok heller ikke. I kan ikke finde ud af hvad fejlen er?
Avatar billede myplacedk Nybegynder
18. juni 2003 - 10:00 #5
PEAR behøver heller ikke at være "installeret" som sådan. Det er bare nogle filer, du kan lægge et sted i din includepath.
Avatar billede emileej Nybegynder
09. januar 2006 - 14:47 #6
Rimeligt gammel tråd. Lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester