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?
Skrevet tor. d. 28. maj 2009 kl. 14:29:14| #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
Skrevet tor. d. 28. maj 2009 kl. 14:38:42| #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.
Skrevet tor. d. 28. maj 2009 kl. 14:51:15| #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...
Skrevet tor. d. 28. maj 2009 kl. 14:59:33| #4
Hvorfor må det kun være tal? Den betingelse lyder ret underlig.
Skrevet tor. d. 28. maj 2009 kl. 15:03:28| #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.
Skrevet tor. d. 28. maj 2009 kl. 15:29:02| #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.
Skrevet tor. d. 28. maj 2009 kl. 15:37:33| #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".
Skrevet tor. d. 28. maj 2009 kl. 15:38:14| #8
Skrevet tor. d. 28. maj 2009 kl. 15:38:17| #9
Rettelse: "001002003004" vil blive læst som "1002003004"
Skrevet tor. d. 28. maj 2009 kl. 15:38:40| #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.
Skrevet tor. d. 28. maj 2009 kl. 15:41:34| #11
ebusiness -> Måske netop derfor jeg spørger pænt om hjælp.
Skrevet tor. d. 28. maj 2009 kl. 15:49:16| #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.
Skrevet tor. d. 28. maj 2009 kl. 16:01:10| #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.
Skrevet tor. d. 28. maj 2009 kl. 16:04:24| #14
Forresten, jakobdo. Jeg kan ikke rigtig se noget på den side du henviser til?
Skrevet tor. d. 28. maj 2009 kl. 16:07:34| #15
Jamen, hvis du har opnået det du skulle, så er jeg tilfreds.