Avatar billede flodhesten Nybegynder
28. maj 2009 - 14:24 Der er 14 kommentarer og
1 løsning

Tekst til tal og tilbage igen

Hej.

Jeg har en tekst "test". Findes der et script eller noget, så jeg kan få "test" udtryk ved tal? Så eventuelt: "test" -> "32487204".

Det er nok ikke lige talden værdi som test vil få.

Og kan man så gå omvendt igen. Altså nu har jeg talmængden "32487204". Nu vil jeg gerne have det oprindelige "test" tilbage igen.

Man kan vel kalde det en slags kryptering, udover sikkerhed er ligegyldigt. Jeg skal bare have tal i stedet for tekst.

Nogen der har en simpel løsning?
Avatar billede jakobdo Ekspert
28. maj 2009 - 14:29 #1
Hvis du udtrykker alle tals værdi i alfabettet, så f.eks.:

a = 01
b = 02
c = 03
osv...
2 tal er nødvendig, da 12 ikke er til at sige om det så er ab eller l
hvor ab = 0102 og l = 12
Avatar billede flodhesten Nybegynder
28. maj 2009 - 14:38 #2
Hmm...

har overvejet at give hver bogstav en værdi. Men det kan måske godt give lidt problemer når jeg skal tilbage igen? Så skal der jo være en slags seperator. 0105295392 - Den eneste måde at kunne læse den talkode skulle så være fordi computeren ved, at hvert bogstav består af to talværdier. Jeg tvivler på, at det er holdbart til min løsning. Desuden er 99 muligheder heller ikek nok, hvis både store og små bogstaver, samt tal og specieltegn skal have en værdi.

Ellers skal der være en anden seperator såsom:

010-529-539-342

Men det ødelægger netop det, at mit output udelukkende må bestå af tal.
Avatar billede repox Seniormester
28. maj 2009 - 14:51 #3
PHP har masser af smarte funktioner, så med lidt fantasi kunne man da hurtigt forestille sig noget ala

<?php
    $str = "Hej med dig";
   
    $jumper = 33;
   
    $singles = str_split($str);
    $enc = "";
    foreach($singles as $value)
    {   
        $encNo = ord($value) + $jumper;
        $enc .= sprintf("%03s", $encNo);
    }

    // Giver dig en streng med tal
    echo $enc;
   
    $chr = str_split($enc, 3);
    $theString = "";
    foreach($chr as $value)
    {   
        $charNo = (int)$value - $jumper;
        $theString .= chr($charNo);
    }
   
    // Giver dig den dekrypterede streng
    echo $theString;
?>

utestet, men du får forhåbentlig idéen...
Avatar billede ebusiness Nybegynder
28. maj 2009 - 14:59 #4
Hvorfor må det kun være tal? Den betingelse lyder ret underlig.
Avatar billede flodhesten Nybegynder
28. maj 2009 - 15:03 #5
Det er fordi jeg er ved at lave et Krypteringsscript som bygger på RSA. Og krypteringen foregår med tal. Derfor skal jeg have lavet min klartekst om til tal, før jeg kan begynde at kryptere denne. Og det skal derfor også være muligt at gå tilbage fra tal til bogstaver. Man skal nok forstå RSA-princippet, for at det giver mening.

Ivørigt ser det meget lovnde ud repox. Jeg kigger lige nærmere på det.
Avatar billede jakobdo Ekspert
28. maj 2009 - 15:29 #6
Hvis du begynder at smide - imellem, så kan du vel ligeså godt bruge a,b,c osv.. ?
Så a kunne jo laves til 001, b = 002 osv...
ab vil så være = 001002
Og du vil vel aldrig sidde og læse disse værdier selv, men altid maskinelt formoder jeg.
Så en seperator er vel lige meget.
Avatar billede flodhesten Nybegynder
28. maj 2009 - 15:37 #7
jakobdo.

Problemet er, at i krypteringen vil "001002003004" blive læst som "1002", hvilket jo også er en meget naturlig måde at læse tal på, og det vil have en altafgørende betydning. Når man dekrypterer den hemmelige kode, vil man kun få "100203004" og så læser computeren det pludselig som 100, 203, 004. Det er derfor ikke holdbart.

Her er for eksempel hvad "Hej med dig, Børge!" blev til, når talkoden starter med 0:
»õ&+Eõê+ë¢*€Ëw ô!

... og så er dekrypteringen vist ikke helt vellykket.

Jeg har dog også et problem med at en talkode kan starte med 0 i repox script, men her tror jeg det kan løses ved at ændre på "jumperen".
Avatar billede jakobdo Ekspert
28. maj 2009 - 15:38 #8
Avatar billede flodhesten Nybegynder
28. maj 2009 - 15:38 #9
Rettelse: "001002003004" vil blive læst som "1002003004"
Avatar billede ebusiness Nybegynder
28. maj 2009 - 15:38 #10
Hmmm, det lyder som om at du er lidt længere ude end du kan bunde.

Anyway, eftersom du i en tal-variabel kun kan gemme relativt små tal så duer det ikke at prøve på at oversætte en streng til et tal, det kan ikke være i en enkelt variabel. Det du kan gøre er at oversætte hvert enkelt tegn til et tal (fx vha. ord() funktionen som repox også nævner, chr() virker den anden vej), gemme de tal i et array, og behandle arrayet som et 256-decimalt tal.
Avatar billede flodhesten Nybegynder
28. maj 2009 - 15:41 #11
ebusiness -> Måske netop derfor jeg spørger pænt om hjælp.
Avatar billede repox Seniormester
28. maj 2009 - 15:49 #12
Nu spørger jeg nok lidt fjollet, men er du ude på at ramme noget i forbindelse med Diffie-Hellman key exchange? For så skal du jo også koncentrere dig om mange andre ting end blot det med de tal.
Avatar billede flodhesten Nybegynder
28. maj 2009 - 16:01 #13
Jeg har ikke hørt om lige præcis "Diffie-Hellman key exchange", men umiddelbart når slår det op og læser om det, beskriver det meget godt det jeg har gang i. Men det er altså et Public-key cryptography script jeg er ved at lave (Som bygger på RSA-kryptering med offentlig og hemmelig nøgle). Selve krypteringsscriptet har jeg styr på, og det eneste jeg mangler er sådan set det jeg har efterspurgt her. Men hvis nogen skulle være interesseret i hele mit system, så kan jeg godt lægge hele koden op.

Og jeg har egentlig haft meget held med at implementere dit script, repox. Så det vil nok være meget refærdigt at give dig point.
Avatar billede flodhesten Nybegynder
28. maj 2009 - 16:04 #14
Forresten, jakobdo. Jeg kan ikke rigtig se noget på den side du henviser til?
Avatar billede repox Seniormester
28. maj 2009 - 16:07 #15
Jamen, hvis du har opnået det du skulle, så er jeg tilfreds.
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