Kryptering med Vigenère-metoden

Like dokumenter
Kryptering med vigenere-metoden

I denne oppgåva skal me lage eit enkelt spel der pingvinane har rømt frå akvariet i Bergen. Det er din (spelaren) sin jobb å hjelpe dei heim att.

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Steg 1: Regneoperasjoner på en klokke

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

PXT: Det regnar mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes. Oversatt av: Stein Olav Romslo

Her skal du lære å programmere micro:biten slik at du kan spele stein, saks, papir med den eller mot den.

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Steg 1: Rest etter divisjon

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

JS: Grunnleggjande JavaScript

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

I denne oppgaven skal vi gjøre enkle operasjoner på tekst, som å endre størrelsen på bokstavene og telle ord.

Steg 1: Få noe på skjermen

I denne oppgaven skal vi gi en enkel innføring til klasser og objekter (ordene forklares senere i teksten).

PXT: Micro:bit repeater

Hver ting i en liste kalles et element. En liste lages ved å skrive elementer inni [], med, mellom elementene:

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Steg 0: Installere Pygame Zero

PGZ - Hangman Ekspert Python Lærerveiledning

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Skilpadder hele veien ned

Modell, meldinger og oppdatering

Steg 1: Husker du skilpadden?

Steg 1: Felix har forsvunnet!

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Steg 1: Piler og knappetrykk

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Steg 1: Tekst på flere linjer

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Øvingsforelesning 9 i Python (TDT4110)

JS: Grunnleggende JavaScript

Steg 1: Hvordan fungerer spillet?

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

PXT: Tikkende bombe. Introduksjon. Steg 1: Vi starter spillet. Skrevet av: Kolbjørn Engeland

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Steg 1: Endre bakgrunn og finne figurer

Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

Skilpadder hele veien ned. Steg 1: Tegn et fjell. Sjekkliste. Introduksjon. Hent frem skilpaddene dine, åpne IDLE, det er på tide å tegne igjen.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Denne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

UNIVERSITETET I OSLO

Steg 1: Lag bildedeklarasjon

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Steg 1: Installere programvaren

Læringsmål og pensum. v=nkiu9yen5nc

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Øvingsforelesning 7 i Python (TDT4110)

Løpende strekmann Erfaren Videregående Python PDF

Brukarrettleiing E-post lesar

Repetisjon Novice Videregående Python PDF

PXT: Flasketuten peker på

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

INF120: Oblig 3. Yngve Mardal Moe

Lærerveiledning - Snøballkrig

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Øvingsforelesning 5 Python (TDT4110)

Steg 1: Bli kjent med spillet

Fyll inn datoar i rutene etter kvart som du set deg mål og når dei. Mitt mål Språk: Dette kan eg

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Lærerveiledning - Snøballkrig

Steg 1: Katten og fotballbanen

Ping pong. Introdusjon: Steg 1: Sprettende ball. Sjekkliste. Skrevet av: Torbjørn Vik Lunde

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Øvingsforelesning 5 Python (TDT4110)

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

PXT: Det regner mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes

6105 Windows Server og datanett

PXT: Komponer en melodi

Start et nytt PXT-prosjekt, for eksempel ved å gå til makecode.microbit.org (

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

INF1040 Oppgavesett 14: Kryptering og steganografi

Hvordan en prosessor arbeider, del 1

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Kom i gang med Learn To Mod

Steg 1: Vi starter fra toppen

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Lærerveiledning - Pong

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

Steg 1: Animasjons-attributtet

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

JS: Trykkomania. Introduksjon. Skrevet av: Arve Seljebu

Skilpaddefraktaler Erfaren Python PDF

Transkript:

Kryptonøtt Skrevet av: Arve Seljebu Oversatt av: Stein Olav Romslo Kurs: Python Tema: Tekstbasert Fag: Programmering Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon Kryptering har vore i bruk i kommunikasjon lenge. Faktisk brukte dei det for nesten 4000 år sidan! I tillegg er det artig å sende hemmelege meldingar. Før du startar på denne oppgåva anbefalar me at du har gjort Hemmelege koder (../hemmelige_koder/hemmelige_koder_nn.html) fyrst. Denne oppgåva er ei nøtt. Det vil seie at du skal finne ut av det meste sjølv. Står du heilt fast må du spørje nokon om hjelp. Kryptering med Vigenère-metoden Vigenère er litt smartare enn krypteringa i Hemmelege koder (../hemmelige_koder/hemmelige_koder_nn.html), men den er ikkje så annleis. Det er viktig at du forstår koden frå den oppgåva, sidan du skal lage nesten lik kode sjølv. Python 2 Denne koden fungerer best med Python 3. Viss du har Python 2 må du leggje ein u framfor alle strengar, altså må strengen 'asdf' skrivast slik som dette: u'asdf'. Lag kommentarar med forklaring Les koden under.

Kva er ulikt koden i Hemmelege koder (../hemmelige_koder/hemmelige_koder_nn.html)? Kva gjer alphabet.find? Kva tyder det at alphabet.find gir -1 som svar? Legg til kommentarar med # over/bak kvar linje med forklaringa di. """Vigenere encoding, by Arve Seljebu(arve@seljebu.no), MIT License, 2014""" alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅabcdefghijklmnopqrstuvwxyzæøå.,?-_;:+1234567890"' def vigenere_encode(msg, key): """Function that encodes a string with Vigenere cipher. The encrypt ed string is returned. """ secret = '' key_length = len(key) alphab et_length = len(alphabet) for i, char in enumerate(msg): msgint = alphabet.find(char) encint = alphabet.find(key[i % key _length]) if msgint == -1 or encint == -1: return '' encoded = (msgint + encint) % alphabet_length secret += alphabet[encoded] return secret message = 'My first computer program was a song called Popcorn written in QBasic. The second computer program I made was a bot made for IRC.' key word = 'source' encrypted = vigenere_encode(message, keyword) print(encrypted)

Hint Du kan bruke kommandoen help('funksjonsnamn') i Python-terminalen for lese manualen. Prøv desse: help('def') help('len') help('vigenere_encode') Dekryptering No skal me sjå på korleis me kan dekryptere meldingar. Etter kvart vil me til og med kunne lese hemmelege meldingar utan å kjenne den hemmelege nøkkelen på førehand. Lag vigenere_decode Lag ein funksjon som gjer det motsette av den over (altså dekrypterer). Koden skal sjå nesten lik ut som den over. Funksjonen skal ta inn to parametrar: ein koda tekst og ein nøkkel. Den skal dekryptere den koda teksten med nøkkelen. Og returnere den dekrypterte teksten. Test at funksjonen fungerer og prøv med dine eigne strengar og krypteringsnøklar. Kanskje du kan dele nøkkelen og sende den krypterte teksten til ein ven? Cracking

No skal du prøve å knekke ein koda streng. Det er vanskeleg, så du må leggje ei plan fyrst. Strengen er: q0ø:;ai"e47frbqnbg4wnb8b4lqn8erkc88u8gen?t6lanbg4gø""n6k086hb"ø8crhw"+l S79Ø""N29QCLN5WNEBS8GENBG4FØ47a Hint Nøkkelen er seks små bokstavar. Språket i setninga er engelsk. Finn ein metode å sjekke om den dekrypterte strengen er korrekt. Til dømes kan du tenke på kor mange mellomrom den burde innehalde. For å generere moglege nøklar kan du bruke itertools.product(). Prøv til dømes å sjå kva du får om du loopar over itertools.product('abcd', repeat=2). Bruk ei ordbok Så lenge me brukar engelske ord som nøklar er det mykje raskare å knekke krypteringa med ei ordbok. Ei ordbok finst på alle Linux/Mac/Unix-maskiner under /usr/share/dict. Brukar du Windows kan du laste ned ei slik fil frå Internett. Søk til dømes på large English vocabulary word lists. Desse filene inneheldt alle ord som står i ei engelsk ordbok, separert med linjeskift. Finn ut korleis du kan laste inn orda frå fila (pass på at du fjernar linjeskifta) og bruk dei til å dekryptere ein ny streng: t-jo:bk0am,:cq+æagw?fjgb0kvcgmq6sqn"gaidl-på7954e:7jr,iæocf0m"cqdøvlhd5 3CÅ;IA2DMG5ØHDØVåL:JQØ439LRBBVEMTBÆ6CF0M"CQNAG8G1V6LÅ8FF4Z

Bruk metodane du laga i oppgåva over for å sjekke om du har funne riktig nøkkel. Viss du køyrer skriptet ditt med kommandoen time python3 vigenere.py kan du sjå kor lang tid den brukar. Premie Viss du klarar denne nøtta vil forfattaren av oppgåva gjerne spandere ein sjokolade på deg, føresett at du deler koden din. Send ein epost til arve@seljebu.no (mailto:arve@seljebu.no) :-) Lisens: CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0/deed)