kryptering (dekryptering)

Tags:    php

<< < 12 > >>
Hej alle sammen :D
Jeg sad igår og roede med et log system som gemmer fejl ved bruger logins samt 404 fejl

det hele bliver smidt i en txt fil, som jeg så vil have krypteret (så den ikke kan læses)

jeg laevde så med str_replace noget som virker :)

her er den del som laver den orginale tekst om:
Fold kodeboks ind/udKode 


Min test tekst er:
a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å

som bliver til:
o o i j k f g a l d p c i o e h j k l l g g o p f g bm em bg


er der en som kan lave den modsatte så
a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å

bliver til det rigtige alfabet... hvis det overhoved er muligt... har prøvet mange forskellige mulige løsninger nu, men kan ikke rigtig få den til at skrive det... kan få 3-4 rigtigt..

100 points til den som kan skrive dekrypteringen til den eller hjælper nok til jeg selv kan gøre det :D og et MEGA stort tak

har kaldt den enigma_ll fordi at alle bokstaver er de samme som enigma laver hvis der kun er 1 af dem.





Indlæg senest redigeret d. 10.02.2009 12:15 af Bruger #11875
13 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
problemet er "løst"
brugte en anden metode til det.
men det virker nu :D




Du skal starte med de længste "bogstaver" når du dekrypterer kan jeg i hvert fald røbe. Ellers vil du få nogle problemer med at dekryptere "bogstaverne" der er mere end et tegn langt.

og du har gjort meget dobbeltarbejde med din str_replace()

Funktionen understøtter arrays så du kan lave noget i stil med:

$find = array("a","b","c" ... etc...);
$erstat= array("b","n","m" ... etc ...);
$enigma_ll = str_replace($find, $erstat, $enigma_ll);

lav evt. din funktion således:

// Hvis decrypt = true så dekrypterer den strengen, ellers krypterer den strengen.
function enigma_ll ($input, $decrypt = false){

// Hvad skal vi finde og hvad skal vi erstatte med?
$find = array("a","b","c" etc...);
$erstat = array("b","n","m" etc...);

// Hvis vi skal dekryptere, vender vi vores arrays på hovedet
if($decrypt){
$find = array_reverse($erstat);
$erstat = array_reverse($find);

}

// Find og erstat
$resultat = str_replace($find, $erstat, $input);

// Returner data
return $resultat;

}

Tror det er noget som dette du skal ud i



Du skal også tænke på, at hvis du skifter alle A'er ud med B, og derefter skifter alle B'er ud med X, så har har du jo essentielt skiftet alle A'er ud med X.

Derudover er en så simpel substitutions algoritme super nem at bryde. Jeg gør det selv tit som et alternativ til kryds og tværs :)



Ændrede bokstaver til tal. gør det mere ulæseligt :D

og nu ser min tekst sådan ud:
Fold kodeboks ind/udKode 


og kan dekrypteres :)

(det er ikke alfabetet jeg brugte til tal. det er et fejl login)



Indlæg senest redigeret d. 10.02.2009 16:03 af Bruger #11875
Ændrede bokstaver til tal. gør det mere ulæseligt :D

og nu ser min tekst sådan ud:
Fold kodeboks ind/udKode 


og kan dekrypteres :)

(det er ikke alfabetet jeg brugte til tal. det er et fejl login)


Det ændrer sådan set ikke noget om du mapper bogstaver til andre bogstaver eller til tal. Dette kaldes en monoalfabetisk substitutions algoritme og kan nemt brydes med simpel frekvens analyse: http://en.wikipedia.org/wiki/Substitution_cipher

...altså, det oftest fremkomne bogstav/talkombination er sandsynligvis et 'e', og så videre.



nu var det heller ikke fordi jeg skulle lave en ubrydelig kryptering.. det var bare så man ikke kan gå direkte ind og læse mine log filer. Og for at lave noget som jeg ikke har lavet før :D


læste lige hurtigt: "Substitution cipher" som du linkede..

forstår så ikke hvordan man vil kunne finde ud af hvad der står i fx. de tal jeg har skrevet oppe. når man ikke har mulighed for at kunne generere ny data og se hvad det bliver lavet om til.

Hvis du keder dig må du egentlig godt prøve om du kan finde ud af hvad der står, og fortælle hvordan du gør lol :D



nu var det heller ikke fordi jeg skulle lave en ubrydelig kryptering.. det var bare så man ikke kan gå direkte ind og læse mine log filer. Og for at lave noget som jeg ikke har lavet før :D


læste lige hurtigt: "Substitution cipher" som du linkede..

forstår så ikke hvordan man vil kunne finde ud af hvad der står i fx. de tal jeg har skrevet oppe. når man ikke har mulighed for at kunne generere ny data og se hvad det bliver lavet om til.

Hvis du keder dig må du egentlig godt prøve om du kan finde ud af hvad der står, og fortælle hvordan du gør lol :D


Giv mig en længere tekst, så gør jeg et forsøg :-)

Men lad os sige, at du har noget i stil med:
A=759878576
B=272623671
C=376751988

...så vil jeg i din krypterede tekst lede efter gentagne mønstre. Hvis jeg igen og igen støder på mønsteret '272623671', så vil jeg arbejde videre i den tro, at det er én entitet. Og måske alle entiteter er lige lange ? Det vil jeg også kigge efter.

Og dermed er det igen ligemeget om du mapper A=>K eller A=>734763fdsjfsdjk_/f89sdf54k

Derefter går jeg så videre og analyserer, hvor ofte de enkelte entiteter forekommer. Den mest forekomne entitet bør så stå for bogstavet 'E'. Derefter er det lidt mere tåget, men de oftest forekomne tre-bogstav-kombinationer er 'DER', 'DEN' og 'DET', og så prøver jeg mig bare lidt frem.

Lidt efter lidt ser man tekst og så gætter man sig lidt frem og kommer længere og længere.



Fold kodeboks ind/udKode 


Her er en længere tekst.



Her er en hurtig første frekvens analyse. Prøv at smide din tekst ind i en editor og udskift hver talgruppe med mellemrum én af gangen. Så vil du se mønstrene:

Fold kodeboks ind/udKode 


Klarteksten er altså muligvis på 137 tegn.



Indlæg senest redigeret d. 11.02.2009 14:27 af Bruger #2695
imponerende :)
wow er der virkelig 25 af 9999
lol :D

glæder mig til at se hvad du kommer frem til :)



<< < 12 > >>
t