INF100/INF100-F - INNLEVERING 2 HØSTEN 2005



Like dokumenter
INF100 INNLEVERING 3 HØSTEN 2004

MAT-INF 1100: Obligatorisk oppgave 1

Obligatorisk oppgave 1 INF1020 h2005

Brukermanual for Quizbuilder

INF1040 Oppgavesett 14: Kryptering og steganografi

MAT-INF 1100: Obligatorisk oppgave 1

INF Ekstrainnlevering

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

INF Obligatorisk innlevering 5

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Hjemmeeksamen 1 i INF3110/4110

Oppgaver til kapittel 19 - Kryptering og steganografi

Obligatorisk oppgave 6 i INF1010: Dekryptering

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

UNIVERSITETET I OSLO

INF Innleveringsoppgave 6

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

N-dronningproblemet Obligatorisk oppgave 1 I120, H-2000

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

UNIVERSITETET I OSLO

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Obligatorisk oppgave 1 i INF 4130, høsten 2008

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

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

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

UNIVERSITETET I OSLO

Shellscripting I. Innhold

Ordliste. Obligatorisk oppgave 1 - Inf 1020

UNIVERSITETET I OSLO

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

A 1 B 1 D 1 H 1 H 2 D 2 B 2 E 1 E 2 I 1 I 2...

Obligatorisk oppgave 1 i INF 4130, høsten 2009

Steg 1: Regneoperasjoner på en klokke

UNIVERSITETET I OSLO

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Kryptering med vigenere-metoden

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

Oppgave 1. Sekvenser (20%)

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

INF225 høsten 2003 Prosjekt del 4: kodegenerering

Endret litt som ukeoppgave i INF1010 våren 2004

Beskrivelse av filformatet for likningsoppgaven pass og stell av barn

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

Backtracking som løsningsmetode

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

INF Obligatorisk innlevering 6

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

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

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Forelesning inf Java 5

Forelesning inf Java 5

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

MAT1120. Obligatorisk oppgave 1 av 2. Torsdag 20. september 2018, klokken 14:30 i Devilry (devilry.ifi.uio.no).

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Koder. Kristian Ranestad. 8. Mars 2005

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I OSLO

Obligatorisk oppgave 4: Lege/Resept

MAT-INF 1100: Obligatorisk oppgave 1

INF109 - Uke 1b

UNIVERSITETET I OSLO

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Læringsmål og pensum

Obligatorisk oppgave nr. 3 i INF1300 høsten 2009

UNIVERSITETET I OSLO

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Norsk informatikkolympiade runde

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

UNIVERSITETET I OSLO

Obligatorisk oppgave 2 i INF 4130, høsten 2009

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

København 20 Stockholm

Rekker (eng: series, summations)

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

Innhold. Kom i gang med IRiR. 1 Installer R & RStudio. 2 Last ned siste versjon av IRiR-skriptet

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

Alle hele tall g > 1 kan være grunntall i et tallsystem.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Opprette firma. Innhold

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Betinget eksekvering og logiske tester i shell

Transkript:

INF100/INF100-F - INNLEVERING 2 HØSTEN 2005 Krav til innlevering For at innleveringen skal godkjennes må følgende leveres: Oversikt Et dokument som inneholder en oversikt over innleveringen. Den skal inneholde en kort beskrivelse av alle filene som blir levert inn og skal også oppgi navn, gruppenummer og epost-adresse. Hvis du ikke går på noen gruppe, skal du skrive ingen gruppe. Kildekode All kildekode skal selvsagt legges ved. Kildekoden skal være godt kommentert slik at det er lett å sette seg inn i programmenes virkemåte. Koden skal også være godt indentert (dvs. ha innrykk der programmet tilsier det) og lett å lese (f.eks. fornuftig bruk av variabelnavn). Kjøreeksempel For hvert program skal det være med en fil som inneholder en logg av en typisk kjøring av programmet. Et slikt kjøreeksempel viser hvordan programmet brukes og hva programmet skriver ut. Under Linux kan filer med kjørelogg lages slik: 1. Kjør kommandoen: script logg.txt 2. Kjør programmet ditt fra kommandolinjen v.h.a. kommandoen: java Mittprogram 3. Avslutt med kommandoen exit All skjermutskrift som ble produsert mens skriptet ble kjørt ligger nå på filen logg.txt. Alle filene som skal leveres pakkes i en egen zip-fil med navn som er sammensatt av fornavnet ditt og gruppen din. Dette gjøres slik: Hvis du f.eks. har fornavn Yngve og går på Gruppe 3, og du vil ha filene Oppgave1.java, Oppgave2.java, oversikt.txt, logg1.txt og logg2.txt med i din innlevering, lager du en zip-fil med navn yngve3.zip med kommandoen (alt på en linje): zip yngve3 Oppgave1.java Oppgave2.java oversikt.txt logg1.txt logg2.txt Du skal ikke levere inn filene som inneholder bytekode (filene med navn *.class). Bruk 0 som gruppenummer hvis du ikke går på noen gruppe. Innleveringen leveres på følgende nettside: http://nettkurs.uib.no/cms_struts/upload.do. Under Oppgaver på kurset sine sider i Studentprotalen finnes det et pdf dokument med informasjon om hvordan innleveringsystemet brukes. Innleveringsvilkår Innleveringsfristen for Oppgave 1 er mandag 31. oktober 2005, Kl 16:00, og for Oppgave 2 er fristen mandag 7. november 2005, Kl 16:00. Besvarelsen skal bedømmes av gruppeleder, som setter en poengsum på en skala fra 0 (dårligste karakter) til 25 (beste 1

karakter). Innlevering etter fristen eller ingen innlevering vil resultere i poengsummen 0. Gjennomsnittet av poengsummene på de fire innleveringene i INF100 høsten 2005 teller 20% av sluttkarakteren,og den totale poengsummen må være minst 40 for å få lov til å ta eksamen. Det er tillatt at to studenter (ikke flere) samarbeider om innleveringen og leverer identiske besvarelser. De må da levere hver for seg og oppgi navnet på samarbeidspartneren i oversiktsdokumentet. Oppgave 1 I denne oppgaven skal vi lage et program som krypterer eller dekrypterer en melding. Det vil si at vi erstatter en tekst med en ny tekst som for de fleste vil være uforståelig. Dette skal gjøres ved at hver bokstav eller hvert siffer i teksten erstattes med en annen bokstav eller siffer. Bare de små bokstavene a til z og sifrene 0 til 9 skal erstattes, alle store bokstaver og spesialtegn (som f.eks. æ,, og? ) forblir uendret. Krypteringen baseres på en heltallig nøkkel og en tabell som angir rekkefølgen på tegnene. I denne oppgaven skal vi bruke en tabell som har bokstavene a til z i vanlig alfabetisk rekkefølge, mens sifrene 0 til 9 skal være permutert slik tabellen under viser. [a,b,c,...,z,7,2,4,1,0,9,8,3,5,6] (OBS!: Vær nøye med rekkefølgen på sifrene!) Den heltallige nøkkelen som leses fra bruker kan være både positiv og negativ. Dette tallet angir hvor mange posisjoner ut i tabellen vi finner det tegnet vi skal erstatte hver forekomst av det opprinnelige tegnet i teksten med. Hvis f.eks. nøkkelen er 7, vil hver d erstattes med en k, mens 8 erstattes med d (tenk deg at etter 6 starter tabellen på nytt med a, b, c,...). Under er et forslag til hvordan en skjermutskrift fra programmet kan se ut. Det er én utskrift for kryptering og én for dekryptering. bash-3.00$ java Kryptering1 Dette programmet kan brukes til å kryptere/dekryptere en tekst. Programmet leser inn et tall og en tekst og returnerer en kryptert/dekryptert tekst. Gi krypteringsnøkkel: -6 Gi tekst som skal krypteres eller dekrypteres: Denne knekker du ikke. Den krypterte/dekrypterte teksten er: D5hh5 eh5ee5l 3o cee5. bash-3.00$ java Kryptering1 Dette programmet kan brukes til å kryptere/dekryptere en tekst. Programmet leser inn et tall og en tekst og returnerer en kryptert/dekryptert tekst. 2

Gi krypteringsnøkkel: 42 Gi tekst som skal krypteres eller dekrypteres: D5hh5 eh5ee5l 3o cee5. Den krypterte/dekrypterte teksten er: Denne knekker du ikke. Oppgave 2 Vi skal nå lage et program som krypterer et gitt antall linjer med tekst. For at det skal bli enda vanskeligere for utenforstående å dekryptere teksten, skal vi bruke en mer kompleks funksjon enn den som ble brukt i oppgave 1. Også i denne oppgaven skal vi bruke et heltall som nøkkel, men denne gangen skal dette tallet bare angi startpunktet i en annen funksjon. For å generere tilfeldige tall, bruker datamaskinen en funksjon som tar et tall som innparameter og gir ut et nytt tall. Det nye tallet brukes så som innparameter for å gi tall nummer to. Dette fortsetter til det nødvendige antall tall er generert. Vi skal benytte oss av at den samme sekvensen med tall blir generert hver gang, gitt at starttallet er det samme. Dette starttallet kaller vi et frø. For å gjøre dette enda vanskeligere å dekryptere, skal vi ikke bruke disse tallene direkte. Vi lager én tabell som skal brukes til både kryptering og dekryptering. Tabellen lages på følgende måte: Bruk heltalls nøkkelen som er gitt av bruker som frø. Dette frøet settes med metoden setseed i java.util.random klassen. Deretter lager vi en todimensjonal tabell, med 80 kolonner og én rekke for hver linje tekst vi skal kryptere eller dekryptere. Fyll denne tabellen rekke for rekke med tilfeldige tall fra intervallet [0-25]. Første tall skal i første rekke og første kolonne, andre tall i første rekke og andre kolonne,..., det 81. tallet skal i andre rekke første kolonne osv. Et lite eksempel med 3 kolonner der 4 er brukt som frø er vist i tabellen under. 16 18 13 22 5 15 For å gjøre dette vanskeligere for dem som kjenner funksjonen som genererer tilfeldige tall, fortsetter vi og fyller en ny tabell på samme måte. Det er viktig at frøet ikke blir satt på nytt, for da får vi bare de samme tallene som i den første tabellen. Tabell to fra eksempelet med 3 kolonner og 4 som frø er vist under. 5 22 8 15 4 20 Vi skal nå beregne den endelige tabellen som skal brukes til kryptering/dekryptering. For hver celle i den andre tabellen legger vi til verdien lagret i cellen på samme rekke og kolonne i den første tabellen. Etter summeringen kan verdien i hver celle overstige 25, mens den endelige tabellen bare skal inneholde verdiene [0-25]. Dette kan imidlertid løses ved å bruke modulo operasjonen ( % 26 i java). Vi har nå konstruert Krypteringstabellen som skal brukes til kryptering og dekryptering. (Hvordan kan Krypteringstabellen beregnes uten å bruke to tabeller?). Under er Krypteringstabellen for vårt eksempel med 3 rekker. 3

21 14 21 11 9 9 Tallene fra Krypteringstabellen skal nå brukes til å kryptere eller dekryptere de linjene med tekst som er lest inn. Dette skal gjøres ved at hver bokstav erstattes med en annen bokstav. Bare de små bokstavene a til z skal erstattes, alle store bokstaver og spesialtegn (som f.eks. æ, 9,, og? ) forblir uendret. Første rekke i tabellen skal brukes til å kryptere eller dekryptere den første linjen, andre rekke skal brukes på andre linje, osv. For kryptering, så angir tallet i rekke i kolonne j, hvor mange posisjoner ut i alfabetet fra bokstav nummer j i linje i vi finner bokstaven som vi skal erstatte bokstav nummer j i linje i med. For dekryptering, så angir tallet hvor mange posisjoner tidligere i alfabetet vi finner bokstaven som skal erstatte bokstav nummer j i linje i. F.eks hvis vi krypterer og tallet er 5, så blir d erstattet med en i, mens y blir erstattet med en d (tenk deg at etter z starter alfabetet på nytt med a, b, c,...). For dekryptering blir det motsatt. Er tallet 5, så blir i erstattet med en d, mens d blir erstattet med en y. Siden tabellen bare har 80 kolonner, så vil bare de 80 første tegnene på hver linje bli kryptert. I dette programmet skal vi se bort fra alle tegn som kommer etter tegn nummer 80 på linjen. I denne oppgaven skal det lages et program med følgende egenskaper: Det skal leses inn et tegn for å avgjøre om det skal kryptere eller dekryptere. Tegnet k eller K betyr at programmet skal kryptere og tegnene d eller D betyr at det skal dekryptere. Det skal lese inn et heltall som krypteringsnøkkel. Det skal lese inn et heltall som angir hvor mange linjer som skal krypteres eller dekrypteres, samt at disse linjene med tekst skal leses inn. Krypteringstabellen med 80 kolonner som er beskrevet over, skal lages fra den angitte nøkkelen. Bare én tabell skal brukes til å beregne krypteringstabellen. Krypteringstabellen skal brukes som beskrevet over til å kryptere eller dekryptere den innleste teksten. Under er et eksempel på hvordan dialogen med brukeren av programmet kan være når et sett med linjer skal krypteres og dekrypteres. bash-3.00$ java Kryptering2 Dette programmet krypterer eller dekrypterer et gitt antall linjer tekst. Programmet leser inn følgende: - Tegnet k for kryptering eller d for dekryptering. - Et heltall som brukes som krypteringsnøkkel. - Et heltall som angir antall linjer som skal krypteres. - Det antallet linjer tekst som er angitt. Programmet returnerer så en kryptert eller dekryptert versjon av teksten. Svar k for kryptering og d for dekryptering: k 4

Gi krypteringsnøkkel: 53 Gi antall linjer som skal krypteres: 4 Gi linje 1 som skal krypteres: Der bode en underlig gråsprængt en Gi linje 2 som skal krypteres: på den yderste nøgne ø; - Gi linje 3 som skal krypteres: han gjorde visst intet menneske mén Gi linje 4 som skal krypteres: hverken på land eller sjø; Den krypterte teksten blir: Dgp qrzw cl klcclcpk cxåhrræzlu cc tå fij oyegzja zøozj ø; - ahp zmmodb tvxkn hbbsq wlrkgnsa réi fhdzkru cå gzdf kfcys frø; bash-3.00$ java Kryptering2 Dette programmet krypterer eller dekrypterer et gitt antall linjer tekst. Programmet leser inn følgende: - Tegnet k for kryptering eller d for dekryptering. - Et heltall som brukes som krypteringsnøkkel. - Et heltall som angir antall linjer som skal krypteres. - Det antallet linjer tekst som er angitt. Programmet returnerer så en kryptert eller dekryptert versjon av teksten. Svar k for kryptering og d for dekryptering: d Gi krypteringsnøkkel: 53 Gi antall linjer som skal krypteres: 4 Gi linje 1 som skal dekrypteres: Dgp qrzw cl klcclcpk cxåhrræzlu cc Gi linje 2 som skal dekrypteres: tå fij oyegzja zøozj ø; - Gi linje 3 som skal dekrypteres: ahp zmmodb tvxkn hbbsq wlrkgnsa réi Gi linje 4 som skal dekrypteres: fhdzkru cå gzdf kfcys frø; 5

Den dekrypterte teksten blir: Der bode en underlig gråsprængt en på den yderste nøgne ø; - han gjorde visst intet menneske mén hverken på land eller sjø; 6