Kryptering med vigenere-metoden

Like dokumenter
Kryptering med Vigenère-metoden

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!

Steg 1: Rest etter divisjon

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

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

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

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

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

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

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å.

Steg 1: Få noe på skjermen

Steg 0: Installere Pygame Zero

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

PGZ - Hangman Ekspert Python Lærerveiledning

PXT: Micro:bit repeater

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

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

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

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

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

Steg 1: Husker du skilpadden?

Steg 1: Piler og knappetrykk

Steg 1: Felix har forsvunnet!

Steg 1: Tekst på flere linjer

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

Skilpadder hele veien ned

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?

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

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

Løpende strekmann Erfaren Videregående Python PDF

Repetisjon Novice Videregående Python PDF

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

Steg 1: Hvordan fungerer spillet?

JS: Grunnleggende JavaScript

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

Modell, meldinger og oppdatering

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

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

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.

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

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

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

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

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

PXT: Flasketuten peker på

Steg 1: Lag bildedeklarasjon

Steg 1: Installere programvaren

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

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

Øvingsforelesning 9 i Python (TDT4110)

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

Øvingsforelesning 5 Python (TDT4110)

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

Hangman. Level. Introduksjon

Steg 1: Endre bakgrunn og finne figurer

JS: Trykkomania. Introduksjon. Skrevet av: Arve Seljebu

Øvingsforelesning 5 Python (TDT4110)

I dag skal vi lage et nyttig spill, nemlig et spill som hjelper oss å lære andre ting. Vi skal få hjelp til å lære gangetabellen!

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; }

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

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

Steg 1: Bli kjent med spillet

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

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

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

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.

Kom i gang med Learn To Mod

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

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

Komme igang med App Inventor Introduksjon App Inventor PDF

Steg 1: Animasjons-attributtet

Hvordan en prosessor arbeider, del 1

Øvingsforelesning 7 i Python (TDT4110)

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

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

Steg 1: Vi starter fra toppen

Steg 1: Canvas-elementet

PXT: Bjelleklang. Introduksjon. Skrevet av: Kolbjørn Engeland, Julie Revdahl

PXT: Komponer en melodi

INF120: Oblig 3. Yngve Mardal Moe

Læringsmål og pensum. v=nkiu9yen5nc

Steg 1: Katten og fotballbanen

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

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.

Sprettball. Introduksjon. Skrevet av: Geir Arne Hjelle

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

6105 Windows Server og datanett

Breakout. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle og Martin Lie

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Skilpaddefraktaler Erfaren Python PDF

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

Vi har sett enkle datamaskiner. Nå skal vi leke oss med roboter, og finne ut hvordan vi kan få dem til å gjøre forskjellige ting for oss.

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Transkript:

Kryptonøtt Skrevet av: Arve Seljebu Kurs: Python Tema: Tekstbasert Fag: Programmering Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon Kryptering har lenge vært i bruk i kommunikasjon. Faktisk brukte de det for nesten 4000 år siden!! I tillegg er det artig å sende hemmelige meldinger :-) Før du begynner på denne oppgaven, anbefales det at du har gjort Hemmelige koder (../hemmelige_koder/hemmelige_koder.html) først. Denne oppgaven er en nøtt. Det vil si at du skal finne ut av det meste selv. Sitter du helt fast må du gjerne spørre en CodeMaster. Kryptering med vigenere-metoden Vigenere er litt smartere enn krypteringen i Hemmelige koder (../hemmelige_koder/hemmelige_koder.html), men den er ikke så annerledes. I stegene under skal du prøve å forstå vigenere-koden. Det er viktig at du forstår denne koden, ettersom du skal lage nesten lik kode selv. Python 2 Denne koden fungerer best med python 3. Dersom du har python 2, må du legge en u foran alle strenger. Altså 'asdf' må skrives slik som dette: u'asdf'. Lag kommentarer med forklaring Les koden under.

Hva er forskjellig fra Hemmelige koder (../hemmelige_koder/hemmelige_koder.html)? Hva gjør alphabet.find? Hva betyr det at alphabet.find gir -1 som svar? Legg til kommentarer med # over/bak hver linjene med din forklaring. """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('funksjonsnavn') i python-terminalen for lese manualen. Prøv disse: help('def') help('len') help('vigenere_encode') Dekryptering Vi skal nå se på hvordan vi kan dekryptere meldinger. Etterhvert vil vi til og med kunne lese hemmelige meldinger uten å kjenne den hemmelige nøkkelen på forhånd. Lag vigenere_decode Lag en funksjon som gjør det motsatte av den over (altså dekrypterer). Koden skal se nesten helt lik ut som over. Funksjonen skal ta inn to parametre: en kodet tekst og en nøkkel. Den skal dekryptere den kodede teksten med nøkkelen. Og returnere den dekrypterte teksten. Test at funksjonen fungerer og prøv med dine egne strenger og krypteringsnøkler. Kanskje du kan dele nøkkelen og sende den krypterte teksten til en venn? Cracking

Du skal nå prøve å knekke en kodet streng. Dette er vanskelig, så du må lage en plan først. Strengen er: q0ø:;ai"e47frbqnbg4wnb8b4lqn8erkc88u8gen?t6lanbg4gø""n6k086hb"ø8crhw"+l S79Ø""N29QCLN5WNEBS8GENBG4FØ47a Hint Nøkkelen er seks små bokstaver. Språket i setningen er engelsk. Finn en metode å sjekke om den dekrypterte strengen er korrekt. For eksempel kan du tenke på hvor mange mellomrom den burde inneholde? For å generere mulige nøkler kan du bruke itertools.product(), prøv for eksempel å se hva du får om du looper over itertools.product('abcd', repeat=2). Bruk en ordbok Sålenge vi har brukt engelske ord som nøkler er det mye raskere å knekke krypteringen med en ordbok. En ordbok finner du på alle Linux/Mac/Unix-maskiner under /usr/share/dict. Bruker du Windows, kan du laste ned en slik fil fra internett. Søk på large english vocabulary word lists. Disse filene inneholder alle ord som finnes i en engelsk ordbok, separert med linjeskift. Finn ut hvordan du kan laste inn ordene fra filen (pass på at du fjerner linjeskiftene) og bruk dem til å dekryptere en 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 metodene du laget i oppgaven over for å detektere om vi har funnet riktig nøkkel. Dersom du kjører scriptet ditt med kommandoen time python3 vigenere.py kan du se hvor lang tid den bruker. Premie Dersom du klarer denne nøtten, spanderer jeg gjerne en sjokolade på deg dersom du deler koden din. Send en epost til arve@seljebu.no (mailto:arve@seljebu.no) :-) Lisens: CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0/deed)