D3773 3r 3n m45k1n0v3rs477 73k57 50m k4n 1nn3h0ld3 f31l!
0m krypt0grafi0ppgavene
D3ss3 0ppgav3ne 3r struktur3rt litt ann3rd3l3s 3nn d3 andr3 0ppgav3ne på Piggy, lur3r litt hva d3r3 f0r3tr3kk3r! 😎
D3t k0mm3r først til å v3r3 3n d3l inf0rmasj0n til å b3gynn3 m3d 0m t3ma3ne, d3rr3tt3r vil d3t k0mm3 n03n 0ppgav3r 3tt3rpå!
“L3vl3ne” i d3nn3 0ppgav3n 3r ikk3 h3lt s0m l3vl3ne før, h3r 3r ting m3r d3lt 0pp i t3ma3r.
Wh4t 1z 4 “C1ph3r”?
H4v3 y0u 3v3r w4nt3d t0 wr1t3 4 s3cr3t m3ss4g3 t0 4 fr13nd, s0 th4t n0 0n3 3ls3 c4n und3rst4nd 1t? Th3n y0u n33d 4 C1ph3r, 0r ch1ff3r 1n N0rw3g14n! 4 ch1ff3r 1z r1ght 4nd s1mply 4 m3th0d th4t turns n0rm4l t3xt 1nt0 “c0d3” by r3pl4c1ng ch4r4ct3rs (0ft3n l3tt3rs) w1th 0th3r ch4r4ct3rs. Th3 r3sult l00ks l1k3 n0ns3ns3 t0 th0s3 wh0 d0n’t kn0w h0w th3 c0d3 w0rks. Th3 p01nt 1s th4t 0nly th0s3 wh0 kn0w th3 k3y (th3 rul3 f0r r3pl4c1ng th3 l3tt3rs) c4n m4k3 th3 c0d3 und3rst4nd4bl3 4g41n. 1n 0th3r w0rds: ch1ff3rs m4k3 s3cr3t m3ss4g3s p0ss1bl3, wh3th3r 1t’s ch1ldh00d’s pl4y w1th s3cr3t l4ngu4g3 0r r34l sp13s s3nd1ng 3ncrуpt3d m3ss4g3s. 😄
Visste du?
0rd3t “ch1ff3r” 5t4mm3r f4kt15k fr4 3t 4rb15k 0rd: 0rd3t 51fr, 50m b3tyr “null”. K4rsj3 f0rd1 d3n h3mm3l1g3 k0d3n 5å ut 50m 1ng3nt1ng (null m3n1ng!) når f0lk 1kk3 kunn3 løs3 d3n!
d3t f1nn3z m4ng3 typ3r ch1ff3r – n03n bru|<3r t4ll, n03n bru|<3r symb0l3r, 0g m0d3rn3 d4t4krypt3r1ng bru|<3r sv4rt k0mpl1s3rt3 4lg0r1tm3r. d3ss3 k0mpl1s3rt3 4lg0r1tm3r krev3r sv4rt k0mpl1s3rt m4t3m4t1kk, så v1 k4n s3 på n03n 3nkl3r3 4lg0r1tm3r først!
M0n04lf4b3t1sk3 Ch1ff3r
L4 0ss f0rst s3 p4 n03n 4v d3 3nkl3st3 (0g 3ldst3) k0d3m3t0d3n3 s0m f1nn3s: m0n04lf4b3t1sk3 ch1ff3r.
M0n04lf4b3t1sk h0r3s k4nj3 ut s0m 3t v4nsk3l1g 0rd, m3n v1 k4n d3l3 d3t 0pp: m0n0 b3tyr “3n”, 0g 4lf4b3t1sk h4ndl3r 0m 4lf4b3t3t.
4ls4, m0n04lf4b3t1sk3 ch1ff3r 3r k0d3r d3r m4n bruk3r 3tt 3nkl3t “krypter1ngs4lf4b3t” f0r h3l3 m3ld1ng3n. D3t v1l s1 4tt hv3r b0kst4v 1 d3n 0r1g1n4l3 t3kst3n 4llt1d bl1r bytt3t ut m3d d3n s4mm3 b0kst4v gj3nn0m h3l3 d3n kryptr3t3 m3ld1ng3n.
F0r 3ks3mpl3l, h4r du b3st3mt 4tt 4 sk4l bytt3s m3d X, d4 bl1r 4ll3 4-3n3 1 t3kst3n gj0rt 0m t1l X.
Cæ$4r-ch1ff3r
D3t kl4$\(1\)k3 3k\(3mpl3t på 3t m0n04lf4b3t1\)k ch1ff3r 3r Cæ\(4r-ch1ff3r3t (0ppk4lt 3tt3r Jul1u\) Cæ\(4r). D3tt3 3r b4\)1c4lly 3n r3g3l 0m å “sk1ft3” 4ll3 b0k\(t4v3n3 3t v1\)\(t 4nt4ll pl4\)\(3r b0rt0v3r 1 4lf4b3t3t. V1\)$tn0k \(å brukt3 Cæ\)4r $3lv 3t \(k1ft3 på 3 b0k\)t4v3r 1 $1n3 h3mm3l1g3 m3ld1ng3r. D3t fung3r3r $ånn 4t A b1r t1l D, B b1r t1l E, C b1r t1l F, 0g $å v1d3r3 gj3nn0m 4lf4b3t3t. (Når m4n går f0rb1 Z, $t4rt3r m4n på A 1g3n.) 3n m3ld1ng \(0m ABC v1ll3 d3rm3d b1 t1l DEF hv1\) v1 brukr Cæ\(4r\) m3t0d3.
51k fung3r3r Cæ54r-ch1ff3r3t 1 pr4k515:
- V3lg 3n nøkk3l: B35t3m d3g f0r 3t h3mm3l1g t4ll (f0r 3k53mp3l 3) 50m 4ng1r h0r m4ng3 pl4553r du 5k4l flytt3 hv3r b0k5t4v.
- Bytt ut hv3r b0k5t4v: F0r hv3r b0k5t4v 1 d3n 0r1g1n4l3 m3ld1ng3n, f1nn b0k5t4v3n 50m l1gg3r 5å m4ng3 pl4553r 3tt3r d3n 1 4lf4b3t3t (f0r nøkk3l 3 bl1r 4 t1l D, B t1l E, 05v. – hu5k å gå rundt t1l 4 1g3n 3tt3r Z 0m nødv3nd1g). 3v3ntu3lt k4n du 0g5å t4 m3d Æ, Ø 0g Å, m3n d3tt3 bl1r l1tt m3r k0mpl153rt.
- Krypt3rt m3ld1ng: 3r5t4tt b0k5t4v3n3 0g 5kr1v d3n ny3 m3ld1ng3n m3d d3 “5k1ft3d3” b0k5t4v3n3. V1p5 – du h4r 3n ul353l1g, h3mm3l1g t3k5t 50m b4r3 d3 m3d nøkk3l3n k4n f0r5tå!
- F0r å d3krypt3r3 (4l5å gj0r3 d3t 0m t1l l353l1g t3k5t 1g3n) gj0r m4n b4r3 d3t m0t54tt3 5k1ft3t t1lb4k3. Hv15 du v3t nøkk3l3n (f.3k5. 3), 5å 3r d3t l1k3 l3tt å l353 m3ld1ng3n v3d å flytt3 b0k5t4v3n3 3 t1lb4k3 1 4lf4b3t3t.
Sikkerhet?
7h3z3 c0d3z 4r3 n07 v3ry z3cur3 1n 7h3 l0ng run. B3c4uz3 7h3 p4773rn (7h3 zubz717u710n) 1z f1x3d, 4 p3rz0n w17h 3n0ugh p4713nc3 0r z0m3 zm4r7 7r1ckz c4n 34z1ly r3v34l 7h3 z3cr37. F0r 3x4mpl3, 7h3r3 4r3 0nly 4 f3w p0zz1bl3 zh1f7z 1n 7h3 C43z4r c1ph3r, 4z m4ny 4z 7h3 4lph4b37, z0 4ny0n3 c4n 7ry 4ll 71ll 7h3 m3zz4g3 m4k3z z3nz3 – 0r uz3 l3773r fr3qu3nc13z 70 gu3zz 7h31r w4y. W17h 07h3r w0rdz, m4yb3 d0n’7 uz3 7h3 C43z4r c1ph3r f0r zup3r-z3cr37 d14ry n073z 0r z7473 z3cr37z 😉.
M0n0alfab3t1sk3 ch1ff3r 3r 3n fantast1sk måt3 å lær3 pr1ns1pp3t bak krypt3r1ng. D3 3r 3nkl3 og v1s3r hvordan v1 kan bruk3 3n 3nkel r3g3l (3n nøkk3l) t1l å gjør3 om 3n forstå3l1g t3kst t1l n03 myst1sk og uf0rstå3l1g – og t1llbak3 1g3n. Så n3st3 gang du v1l s3nd3 3n v3nn 3n h3mml1g b3skj3d, kan du bruk3 Cæsar ch1ff3r3t! Kanskje d3r3 kan lag3 d3r3s 3g3n var1ant av Cæsars h3mml1g3 alf4b3t? 🔐✨
0ppg4v3r
Pr0gr4mm1ng l4ngu4g3z?
4z b3f0r3, f33l fr33 t0 uz3 4ny pr0gr4mm1ng l4ngu4g3 y0u w4nt! 7h3 3x4mpl3z h3r3 w1ll b3 1n Py7h0n.
0ppg4v3 1.1 - C4354r Ch1ff3r 3nkrуpt10n
N4̊ 5k4l v1 4ktu3llt 5kr1v3 n03 k0d3! V1 5k4l b3gynn3 3nk3lt m3d 4̊ l4g3 3nkrуpt3r1ng3n, b453rt p4̊ t30r13n b0r d3t v4r3 g4n5k3 5tr41ghtf0rw4rd.
1mpl3m3nt3r 3nkrуpt3r1ng m3d C4354r Ch1ff3r v3d 4̊ bruks 3n funksj0n 50m t4r 1nn t3kst 0g 3t t4ll 50m 3r “n0kk3l3n”, 4lts4̊ hv0r mуk3 4lf4b3t3t 5k4l r0t3r35 m3d.
Tips til framgangsmåte.
- L4g 3n funk5j0n 0m h3t3r
c4354r50m t4r 1nn t3k5t3n 50m 5k4l 3nkrypt3r35 0g 3t “5h1ft”, 4l5å, hν0r m4ng3 pl4553r 1 4lf4b3t3t t3k5t3n 5k4l 5k1ft35. - Gå 1 gjr0mm b0k5t4v f0r b0k5t4v 1 t3k5t3n.
- V1 v1l 1kk3 “5h1ft3” 4ndr3 t3gn 3nn b0k5t4v3r: f1nn ut hν0rd4n du 5j3kk3r 4t 3t t3gn 1 t3k5t3n 3r 3n b0k5t4v.
- V1 5k4l “r0t3r3” b0k5t4v3n m3d n pl4553r, 4l5å v1 må l3gg3 t1l r0t45j0n3n: f1nn ut hν0rd4n du k4n gj0r3 t3k5t3n 0m t4ll 5l1k 4t du k4n l3gg3 t1l 5h1ft3t. H1nt:
0rd()funk5j0n3n. - Husk! H3r får du f0r5kj3ll1g3 v3rd13r b453rt 0m du h4r 5må 3ll3r 5t0r3 b0k5t4v3r. R3f3r3r t1l 45C11 T4b3ll3n.
- 3tt3r du h4r 3n v3rd1 3r d3t 5å 3nk3lt 50m å l3gg3 t1l n v3rd13n. M3n hv4 skj3r d3rs0m du 3r på 5lutt3n 4lf4b3t3t? V1 får b4r3 tull 3tt3r b0k5t4v3n Z. Hv0rd4n f1k535 d3tt3? D3tt3 kr3v3r l1tt t3nk1ng.
Fikse enkrypteringen.
F0r å f1k53 krypter1ng3n h3lt kr3v3r l1tt t3nk1ng.
- D3t f0rst3 5t3g3t å t3nk3 på 3r bruk 4v m0dul5 0p3r4t0r3n,
%. - 51d3n 4lf4b3t3t (på 3ng3l5k) b35tår 4v 26 b0k5t4v3r, k4n v1 t4 m0dul5 m3d
26. - M3n d3tt3 fung3r3r 1kk3 h3lt, 53r du grunnen?
- Prøv å
pr1ntut v3rd13n t1l 3n k4r4kt3r m3d0rd(), hv4 får du? - F0r
4får du 97. Hv15 du t4r m0dul5 26 m3d d3tt3, får du 19. Husk 4t m0dul5 v1l 4llt1d g1 3t 5v4r m3ll0m 0 0g t4ll3t. - D3tt3 k4n f1k535 v3d å l4gr3 5t4rtv3rd13n t1l 5t0r3 0g 5må b0k5t4v3r, tr3kk3 d3nn3 fr4 b0k5t4v3n, 0g d3r3tt3r t4 m0dul5. D4 bl1r d3t:
(0rd(b0k5t4v) - 0rd('4')) % 26 - F0r å få t1lb4k3 d3n r3tt3 b0k5t4v3n l3gg3r du b4r3 t1l 5t4rtv3rd13n 1g3n.
- 3tt3r 4llt d3tt3 k4n du 3nd3l1g gj0r3 t4ll3t 0m t1l 3n b0k5t4v 1g3n. H3r k4n du bruk3
chr()funk5j0n3n. - Nå k4n du 3nd3l1g l3gg3 b0k5t4v3n t1l 3t r35ult4t 0g r3turn3r3 d3n 3nkrypt3rt3 t3k5t3n!
Løsning:
def caesar_cipher(text, shift):
result = ""
for char in text:
if char.isalpha():
# find out the starting point based on upper and lower case
start = ord('A') if char.isupper() else ord('a')
# The tricky shift calculation
result += chr((ord(char) - start + shift) % 26 + start)
else:
result += char
return result
0ppg4v3 1.2 - C4354r Ch1ff3r D3krypt3r1ng
D3krypt3r1ng 3r b4r3 4 9jør3 d3n m0t54tt3 utr3gn1ng3n t1l 3nkrypt3r1ng. Du tr3kk3r fr4 0ff53t 15t3d3t f0r 4 l3gg3 t1l.
Tips til framgangsmåte.
U53 7h3 fu/\/c710/\/ y0u m4d3 1/\/ 745k 1 f0r 7h15. Ju57 74k3 7h3 54m3 fu/\/c710/\/, bu7 1/\/ r3v3r53. 7h15 c4/\/ b3 d0/\/3 by m4k1/\/g 5h1f7 4b0u7 26 - 5h1f7.
Løsning:
def caesar_decrypt(text, shift):
return caesar_cipher(text, 26 - shift)
1337: 7h3 50lU710n 15:
def caesar_decrypt(text, shift):
return caesar_cipher(text, 26 - shift)
07h3r M0n04lf4b371c C1ph3rz/C1ph3rz (3x. 47b4$h)
D37 f1nn3z 4ndr3 m0n04lf4b371\(k3 c1ph3rz 0g\)0! 3n 4v d3 3nkl3r3 3r d3n \(0m k4ll3\) “47b4$h” C1ph3r.
H0w d03z @tb@$h w0rk?
D3nn3 1z v3ry \(1mpl3, 1n\)t3@d 0f @ r0t@t10n \(0 l3tt3rz @r3 m@pp3d t0 th3 0pp0\)1t3 @lph@b3t. H3r3 1z @ t@bl3 $h0w1ng th3 m@pp1ng:
| @ | b | c | d | 3 | f | g | h | 1 | j | k | l | m | n | 0 | p | q | r | $ | t | u | v | w | x | y | z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| z | y | x | w | v | u | t | s | r | q | p | o | n | m | l | k | j | i | h | g | f | e | d | c | b | a |
0ppg4v3 1.3 - 47b47h Ch1ff3r 3nkrуpt3r1ng 0g D3krуpt3r1ng
D37 kj3kk3 m3d 47b47h 3r 47 s1d3n 3nkrуpt3r1ng 3r 3n 1 t1l 1 7r4nsf0rm4sjon, så fung3r3r d3n d1r3k73 1 r3v3rs. 4lså, hv1s du h4r l4gd 3nkrуpt3r1ng3n så h4r du 0gså, 4u70m471sk l4gd d3krуpt3r1ng3n.
H0w c4n th1s b3 d0n3 1n pr4ct1c3?
Y0u c4n 31th3r 5ubtr4ct th3 l3tt3r 1n r3l4t10n t0 Z, 0r cr34t3 4 “L00k-up” t4bl3. 4l50, th4t m34n5 4 t4bl3 0r d1ct10n4ry th4t c0nt41n5 4ll th3 l3tt3r5 fr0m 4 t0 z 4nd wh4t th3y 5h0uld b3c0m3. Th15 c4n b3 4 g00d 50lut10n 1f y0u w4nt t0 cr34t3 4n0th3r typ3 0f 3ncrypt10n.
Lookup-table implementasjon.
letters = {
'a': 'z'
'b': 'y'
'c': 'x'
'd': 'w'
# ... add the rest of the letters downwards
}
V3d h3lp 4v d3nn3 t4b3ll3n k4n du g4̊ 1gj3nn0m b0k5t4v f0r b0k5t4v, 54̊ h3nt3 ut v3rd13n p3r b0k5t4v fr4 l00kup-t4b3ll3n, 54̊ 5kr1v3 d3n ut. Hv4 m4̊ du gj0r3 f0r 5t0r3 0g 5m4̊ b0k5t4v3r?
D3l 2 - Krypto4n4ly53 4v M0n04lf4b3t15k3 Ch1ff3r
1 d3nn3 d3l3n 5k4l d3rr3 prøv3 4t l4g3 3n 4lg0r1tm3 f0r 4t “cr4ck3” 3n Cæ54r ch1ff3r, 4l54 t4 3n krypt3rt t3k5t, d3r3tt3r, f4 ut d3n 0rg1n4l3 t3k5t3n utt3n 4t v1t3 nøkk3l3n.
D3tt3 k4n gjør35 n03nlund3 m4nu3llt, 3ll3r 54 k4n du prøv3 4t t4 1 bruk 3nk3l “crypt4n4ly515”. D3tt3 3r 3t k0n53pt 50m v1 5k4l 53 dyp3r3 p4 53n3r3, m3n f0r nå 5k4l v1 b4r3 53 p4 3n 4v d3 3nkl35t3 måt3n: Fr3kv3n54n4ly53 (fr3qu3ncy 4n4ly515). Du k4n l353 m3r 0m d3tt3 k0n53pt3t h3r: Fr3qu3ncy 4n4ly515 3ll3r h3r W1k1p3d14 - fr3qu3ncy 4n4ly515.
D3nn3 m3t0d3n k4n bruk35 1 m3r 3n b4r3 cæ54r-ch1ff3r, d3n k4n bruk35 1 m3r k0mpl153rt3 4lg0r1tm3r 0g54, m3n cæ54r-ch1ff3r 3r 54p455 3nk3l 4t fr3kv3n54n4ly53 3r tr1v13ll.
How does frequency analysis work?
Frequency analysis is, as the name suggests, a way to check the frequency of letters in a text. Why might this be useful? Imagine you have a long text, let’s imagine an English text, taken from Wikipedia - frequency analysis:
In cryptanalysis, frequency analysis is the study of the frequency of letters or groups of letters in a ciphertext. The method is used as an aid to breaking classical ciphers.
Frequency analysis is based on the fact that, in any given stretch of written language, certain letters and combinations of letters occur with varying frequencies. Moreover, there is a characteristic distribution of letters that is roughly the same for almost all samples of that language. For instance, given a section of English language, E, T, A and O are the most common, while Z, Q, X and J are rare. Likewise, TH, ER, ON, and AN are the most common pairs of letters termed bigrams or digraphs), and SS, EE, TT, and FF are the most common repeats. The nonsense phrase ETAOIN SHRDLU represents the 12 most frequent letters in typical English language text.
In some ciphers, such properties of the natural language plaintext are preserved in the ciphertext, and these patterns have the potential to be exploited in a ciphertext-only attack.
If we take this text and transform it using a Caesar cipher (also removing commas, spaces and other special characters), we get the following ciphertext:
xcrgneipcpanhxhugtfjtcrnpcpanhxhxhiwthijsnduiwtugtfjtcrnduatiitghdgvgdjehduatiitghxcprxewtgitmiiwtbtiwdsxhjhtsphpcpxsidqgtpzxcvraphhxrparxewtghugtfjtcrnpcpanhxhxhqphtsdciwtupriiwpixcpcnvxktchigtirwdulgxiitcapcvjpvtrtgipxcatiitghpcsrdbqxcpixdchduatiitghdrrjglxiwkpgnxcvugtfjtcrxthbdgtdktgiwtgtxhprwpgpritgxhixrsxhigxqjixdcduatiitghiwpixhgdjvwaniwthpbtudgpabdhipaahpbeathduiwpiapcvjpvtudgxchipcrtvxktcphtrixdcdutcvaxhwapcvjpvttippcsdpgtiwtbdhirdbbdclwxatofmpcsypgtgpgtaxztlxhtiwtgdcpcspcpgtiwtbdhirdbbdcepxghduatiitghitgbtsqxvgpbhdgsxvgpewhpcshhttiipcsuupgtiwtbdhirdbbdcgtetpihiwtcdchtchtewgphttipdxchwgsajgtegthtcihiwtbdhiugtfjtciatiitghxcinexrpatcvaxhwapcvjpvtitmixchdbtrxewtghhjrwegdetgixthduiwtcpijgpaapcvjpvteapxcitmipgtegthtgktsxciwtrxewtgitmipcsiwthtepiitgchwpktiwteditcixpaidqttmeadxitsxcprxewtgitmidcanpiiprz
This text looks impossible to “crack”, but with “Frequency analysis” it is not only possible, but easy.
This is a figure showing the distribution of letters in English. What we can see is that the letter E is the most frequent letter, followed by T, A and O.
This can be converted into a table and then used to count and analyze a given ciphertext in order to “crack” it. In the tasks below, you will create a program that can “crack” the Caesar cipher on its own. It is true that the Caesar cipher is so simple that you can just check all 26 possibilities manually, but here we will find the solution, completely automatically.
0ppg4v3 2.1 - L4g3 3n fr3kv3nst4b3ll
I 3n pyth0n f1l, 0ppr3tt 3n fr3kv3ns-t4b3ll 4v b0kst4v3n3 i d3t 3ng3lsk3 spr4k3t. Du k4n prøv3 4t f1nn3 d3nn3 s3lv, m3n hv1s du 1kk3 g1dd3r d3tt3, f0rst4r v1 d3tt3!
Hv1s du 4bs0lutt ønsk3r 4t f1nn3 d3n s3lv, k4n du gjør3 s0m 1 0ppg4v3 2.2, m3n p4 3n v3ld1g st0r t3kst.
English Letter Frequency (Svaret)
english_letter_frequency = {
'E': 12.70,
'T': 9.06,
'A': 8.17,
'O': 7.51,
'I': 6.97,
'N': 6.75,
'S': 6.33,
'H': 6.09,
'R': 5.99,
'D': 4.25,
'L': 4.03,
'C': 2.78,
'U': 2.76,
'M': 2.41,
'W': 2.36,
'F': 2.23,
'G': 2.02,
'Y': 1.97,
'P': 1.93,
'B': 1.29,
'V': 0.98,
'K': 0.77,
'J': 0.15,
'X': 0.15,
'Q': 0.10,
'Z': 0.07
}
0ppg4v3 2.2 - T3ll3 fr3kv3ns3n 4v b0kst4v3r i t3kst
N4 sk4l v1 l4g3 3n 4lg0r1tm3 s0m sk4l f1nn3 fr3kv3ns3n 4v b0kst4v3r 1 3n g1tt t3kst.
Tips til framgangsmåte
- B3gynn m3d 3n funksjon som tar inn 3n t3kst (kan v3r3 hva som h3lst).
- I funksjonen, oppr3tt 3n “dictionary” (Python Dictionaries), m3d 3ntri3s for hv3r bokstav i alf4b3t3t, satt til
0. ({'A' = 0, 'B' = 0, 'C' = 0, ..., 'Z' = 0}) - Gå igj3nn0m h3l3 t3kst3n og t3ll hv3r 3nst3 bokstav (øk m3d 1 i tilsvar3nd3 3ntry i dictionari3t). H3r bør du nok ignor3r3 t3gn som ikk3 3r bokstav3r, husk også stor3 og små bokstav3r.
- Hold styr på hvor mang3 bokstav3r som har blitt t3lt totalt.
- Når du 3r f3rdig m3d å t3ll3, d3l
/hv3r v3rdi i tab3ll3n m3d l3ngd3n av t3kst3n og så gang3 m3d 100, d3tt3 vil gi d3g 3n pros3nt-fr3kv3ns. (Du kan s3lvfølg3lig h3ll3r la tab3ll3n din ov3r v3r3 m3ll0m 0 og 1). - Nå skal du ha 3n fr3kv3ns-tab3ll for t3kst3n.
0ppg4v3 2.3 - 54mm3nl1gn3 fr3kv3ns3n 4v 3n t3kst m3d d3n 3kt3 fr3kv3ns3n
N4r du h4r funn3t fr3kv3ns3n t1l 4ll3 b0kst4v3n3 1 t3kst3n k4n du l4g3 3n funksj0n s0m f1nn3r “4vst4nd3n”. Hæ? Hv4 m3n3s m3d d3t?!
Du k4n s3 f0r d3g 4t fr3kv3ns3n t1l f0r3ks3mpl3 E 1 t3kst3n k0mm3r t1l 4 v4r3 3t t4ll. Du k4n f1nn3 “4vst4nd3n” d3nn3 h4r m3d d3n f4kt1sk3 fr3kv3ns3n, s0m 3r 12.70. 3ks3mpl3l: Fr3kv3ns3n 3r 9.63, hv4 3r 4vst4nd3n? 4vst4nd3n k0mm3r t1l 4 v4r3 d3n 4bs0lutt3 v3rd13n (n3g4t1v3 t4ll bl1r p0s1t1v3) m3ll0m d3ss3 tv4 v3rd13rn3: \(12.70 - 9.63 = 3.07\).
L4g 3n funksj0n s0m g4r 1g3nn0m hv3r 4v b0kst4v3n3 4 4v f1nn3r 4vst4nd3n. L3gg d3r3tt3r 4ll3 4vst4nd3n3 s4mm3n t1l 3n “t0t4l” 4vst4nd.
M4773funksjon?
H\/15 du lur3r p4 hv0rd4n m4773-funksj0n3n f0r d3nn3 3r, s4 s3r d3n sl1k u7:
\(\sum_{n=0}^{N} \lvert a - b\rvert\)
Tips til framgangsmåte
- U53 4
f0r-l00p t0 g0 1g3nn0m h3l3 fr3kv3ns-t4b3ll3n. - F0r hv3r b0kst4v 1 fr3kv3nst4b3ll3n, f1nn 4bs0lutt-v3rd13n 54mm3nl1gn3t m3d d3n f4kt15k3 fr3kv3ns3n. Bruk
4bs()funksj0n3n 1 Python f0r d3tt3. - L3gg 54mm3n 4ll3 v3rd13n3, 50 5k4l du f0 3t 5lutt-r35ult4t.
0ppg4v3 2.4 - “Cr4ck3” Cæ54r-ch1ff3r
Nå 5k4l v1 t1ll 5lutt 53tt3 54mm3n 4llt v1 h4r gj0rt 5å l4ngt! Nå 5k4l v1 “cr4ck3” 3n Cæ54r-ch1ff3r.
L4g 3t pr0gr4m 50m “cr4ck3r” 3n Cæ54r-ch1ff3r! Ut3n brük3r-1nnflyt3l53 5k4l du kunn3 h1v3 1nn 3n krypt3rt t3kst å h3nt3 ut d3n d3krypt3rt3 t3kst3n ut3n å tr3ng3 3n nøkk3l.
Test data
Here iz sum test-data u can use, wut do these say?
| Test-data |
|---|
cqrbvnbbjpnrbjenahbnlancxwnqxynoduuhhxdjanjkuncxmnlxmnrclxvyuncnuhjwmqnanjanbxvnfxamboaxvxdaojexarcnsnmrqnuuxcqnanrcbxenajwjtrwrqjencqnqrpqpaxdwmhxdfnanarpqccqnwnpxcrjcrxwbfnanbqxac |
lsaizivxlmwqiwwekimwuymxiwlsvxwsmxqmklxrsxasvoewibtigxihlsaizivmjmxhsiwksshnsf |
bmtxymjwjsfdfsxbjwrjxyfsifsizsktqidtzwxjqkqtslqnajymjpnslgfwsfwitmjdtzhtrjrtxyhfwjkzqqdzutsdtzwmtzwynxstbxywzhpybjqajljyymjjytgjikwfshnxhtktwymnxwjqnjkrzhmymfspxynxgnyyjwhtqifsinfrxnhpfymjfwymfajdtzmfivznjylzfwistyfrtzxjxynwwnslbjqqlttisnlmynkdtzitrjjymtwfyntfsirfwhjqqzxymjwnafqxtkrdbfyhmgniymjrrfpjmfxyj |
zwkyvivrivrepzuzfkjzekyviffdnzcckyvpgcvrjvjkreulgjrzukyvjritrjkztkvrtyvirwkvircfexjzcvetvfevwivjydreifjvkfyzjwvvkefnkyvedzjkvinypufpfltfejzuvipflijvcwrezuzfkzehlzivukyvkvrtyvinzkyrjevvinvccrtklrccpzufekjrzukyvjkluvekslkzyrkvkfjvvpfljkreuzexlgkyvivrccsppflijvcw |
uwwilxchaniuffehiqhfuqmizupcuncihnbylycmhiqusuvyymbiofxvyuvfynizfscnmqchamulyniimguffniayncnmzunfcnnfyvixsizznbyaliohxnbyvyyizwiolmyzfcymuhsqusvywuomyvyymxihnwulyqbunboguhmnbchecmcgjimmcvfysyffiqvfuwesyffiqvfuwesyffiqvfuwesyffiqvfuweiibvfuweuhxsyffiqfynmmbueycnojufcnnfyvullsvlyuezumncmlyuxswigcha |
Tips til framgangsmåte
- B3gynn m3d å lag3 3n funksjon som tar inn t3kst.
- Bruk d3krypterings-funksjonen for Cæsar-chiffer m3d rotasjon N på t3kst3n, N b3gynner på 0.
- Lag 3n fr3kv3nstabb3ll av r3sultat3t
- Finn ut avstanden til r3sultat3t i forhold til d3n faktisk3 fr3kv3nstabb3ll3n
- Ent3n: a) hold styr på avstanden i 3n list3, 3ll3r b) hold styr på d3n minste v3rdien og rotasjonen (d3tt3 blir nøkk3l3n)
- Øk rotasjonen m3d 1 og r3p3t3r st3g 2 til 6 h3lt til N når 26 (full rotasjon).
- R3turn3r d3n d3krypt3rt3 t3kst3n, altså d3n minste-avstanden 3r d3n rett3 nøkk3l3n.

