Cserélje el a törés gyakorlatát, hogy ne felejtse el
A "Rejtvények egy hacker számára" című könyvben az első fejezetben olyan feladat van, amelyben az olvasót arra ösztönzik, hogy dekódolja az egyszerű xor kódolt szöveget. A kulcs nem ismert.
Szövegként egy "Hacker.txt" lelkiismeretét javasolják.
Először meg kell határoznunk a kulcs hosszát.
- ciklikusan tolja át a szöveget i-re (1-től len (szöveg) / 2-ig) jobbra
- Minden egyes iterációnál összehasonlítjuk az eredeti (nem elmozdított) és új szövegek szimbólumainak egybeesésének számát,
- offset i, ahol a mérkőzések száma a maximális és a szükséges hosszúságú kulcs
És mellesleg, miért len (szöveg) / 2. Helyesebb lenne minden eltolást len (text) - 1-ig ellenőrizni, de a kísérletek azt mutatták, hogy az i és n-i műszakos véletlenek százaléka azonos lesz a nagy szövegek esetében. És ki fogja felvenni a kulcsokat a szöveg felénél?
A gyakorlatban így néz ki:
- Megvan az "abcdea"
- Forgassa el i = 1 karakterrel
- Kapunk "aabcde"
- A "abcdea" és a "aabcde" sorokban szereplő karakterek mérkőzéseinek számát keressük
- Van egy egybeesés a nulla karakterben.
- Az 1-es műszakos véletlenek százalékos aránya
Cool. A kulcs hossza ismert minket.
Most meg kell találnunk a kulcsot.
Ehhez az alábbiak szerint járjon el:
- Szétválassza a szöveget szimbólumcsoportokba
- A csoportok száma megegyezik a kulcs hosszúságával
- Mindegyik csoport olyan szimbólumokat tartalmaz, amelyeket az i-es kulcsszimbólum kódol
- Minden csoportban az ábécé leggyakoribb szimbólumát veszik fel (angolul ez egy szóköz)
- Minden egyes vett szimbólum frekvenciáját kiszámítjuk a csoport között
- A legfontosabb előfordulási gyakoriságot a kulcs i-edik betűjévé választjuk