Oppgave 10
10 Fokus i oppgaven: for-løkker og string-metoder
Innenfor kryptografi er Cæsar-metoden en av de enkleste metodene for å kryptere meldinger. Ved hjelp av en krypteringsnøkkel, for eksempel 2, vil «Hei» krypteres til «Jgk». Dette er gjort ved at H «flyttes» to plasser til høyre i alfabetet, altså til J, e flyttes til g og i flyttes til k. Denne metoden skal bevare store og små bokstaver.
Mer formelt, krypteres meldinger ved å «rotere» hver bokstav med krypteringsnøkkelen k. La p være en ukryptert tekst og p\(_i\) være den i‘te bokstaven i p. Da vil hver bokstav c\(_i\) i den krypterte teksten c være gitt ved
\[ c_i = (p_i + k)\ \%\ 29. \]
Her er %
rest operatoren, altså rest ved divisjon. For eksempel har \( 35 / 29 \) rest \(6\), slik at \(35\ \%\ 29=6\).
Din oppgave er å lage et program som krypterer tekst ved hjelp av Cæsar-metoden. Fullfør koden under.
alfabet = ("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","æ","ø","å")
def caesar(tekst, nøkkel):
#TODO: Krypterer en tekst ved hjelp av Cæsar-metoden
caesar("abc ABC 123", 2)
>>> cde CDE 123
caesar("Cæsarkryptering er gøy.", 40)
>>> Nialåvågæbpåtyr på rjg.
caesar("Bla, bla, bla...", -2)
>>> Åjø, åjø, åjø...
Ekstraoppgave
Åge har sendt deg en kryptert melding, men har glemt krypteringsnøkkelen. Lag et program som hjelper deg med å dekryptere koden og finne nøkkelen.
"Ytv wpsst tvtåfæxv xzzt vætøf ånzztætå, wpwp. Ytv hxææt qpdt fteft bdavdpøøtdxåveutdsxvwtftåt sxåt!"