Avatar billede tac Nybegynder
28. maj 2009 - 21:15 Der er 3 kommentarer

Kodeoversætter

Hej

Jeg ville rigtig gerne have hjælp til at programmere en "kodeoversætter". Jeg deltager ofte i nogle konkurrencer, hvor man kan få nogle poster skrevet i en eller anden kode. For hurtigt at kunne løse sådanne koder, ville det være smart med en "kodeoversætter". Jeg har tænkt mig, at den skal virke på den måde, at man i et tekstboksfelt skriver koden man har fået eks. "rot won nsq" som i en a-k kode vil give "hej med dig"

Kodenøglen ser sådan ud:

ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ
KLMNOPQRSTUVWXYZÆØÅABCDEFGHIJ

Systemet i en a-k kode er, at man finder r i den nederste linje og ser, at det bliver til et h, o bliver så til e osv.

Men der findes jo rigtig mange kodenøgler og jeg vil gerne have, at oversætteren hurtigt kan finde frem til den eller de kodenøgler som koden er skrevet i. F.eks. ved at kunne genkende normale ord som hej, jeg, er, i, en, et, post osv.

Håber der er nogle, der forstår hvad jeg mener og har lyst til at hjælpe mig. Koden må meget gerne være skruet sammen så det vil være let for mig at tilføje nye kodenøgler til oversætteren.

Hilsen
Anders
Avatar billede namic Nybegynder
30. maj 2009 - 17:32 #1
Hej Anders,

Jeg kan godt hjælpe dig med at løse den opgave for et mindre beløb.

Så kan du selv vælge om det skal udvikles som et Windows program / PHP / ASP.NET.

Du kan kontakte mig på martintrine (AT) gmail.com

Med venlig hilsen,
Martin Thøgersen.
Avatar billede arne_v Ekspert
31. maj 2009 - 00:57 #2
Hvis krypteringen altid er simpel Cæsar, så er den nem at dekryptere.

Kode:

<?php

$alfa = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ';

function caesar_encrypt($s, $offset) {
    global $alfa;
    $res = '';
    for($i = 0; $i < strlen($s); $i++) {
        $ix = strpos($alfa, $s[$i]);
        if($ix !== false) {
            $ix = ($ix + $offset + strlen($alfa)) % strlen($alfa);
            $res .= $alfa[$ix];
        } else {
            $res .= $s[$i];
        }
    }
    return $res;
}

function caesar_decrypt($s, $offset) {
    return caesar_encrypt($s, -$offset);
}

function caesar_anydecrypt($s) {
    global $alfa;
    for($i = 0; $i < strlen($alfa); $i++) $count[$alfa[$i]] = 0;
    for($i = 0; $i < strlen($s); $i++) if(strpos($alfa, $s[$i]) !== false) $count[$s[$i]]++;
    for($i = 0; $i < strlen($alfa); $i++) {
        if($count[caesar_encrypt('E', $i)] > 0.10 * strlen($s) &&
          ($count[caesar_encrypt('R', $i)] + $count[caesar_encrypt('N', $i)] + $count[caesar_encrypt('T', $i)]> 0.15 * strlen($s))) {
              return caesar_decrypt($s, $i);
        }
    }
    return ">>>>ERROR<<<<";
}

function test($s1) {
    echo $s1 . "<br>\r\n";
    $s2 = caesar_encrypt($s1, 10);
    echo $s2 . "<br>\r\n";
    $s3 = caesar_decrypt($s2, 10);
    echo $s3 . "<br>\r\n";
    $s4 = caesar_anydecrypt($s2);
    echo $s4 . "<br>\r\n";
}

test('DETTE ER EN LILLE TEST');
test('DETTE ER EN LILLE TEST SOM GERNE SKULLE VISE EN ALGORITME TIL DEKRYPTERING AF CÆSARS KRYPTERING');
test('EN MAND GIK OVER ÅEN EFTER VAND');

?>
Avatar billede tac Nybegynder
02. juni 2009 - 21:10 #3
kik her http://www.eksperten.dk/spm/876862

have problemer med at få tilføjet en kommentar da jeg prøvede igår, så kunne ikke andet end at lave et nyt spørgsmål. Men så er der jo bare dobbelt på point til den der kan hjælpe ;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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