Forrige oppgave


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 
Forventet resultat

caesar("abc ABC 123", 2)
>>> cde CDE 123

caesar("Cæsarkryptering er gøy.", 40)
>>> Nialåvågæbpåtyr  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!"