Hemmelige koder Kodeklubb-koden Steg 1

Hemmeligekoder
Nybegynner
P ython
Introduksjon
Leggbortskilpaddenedine,idagskalvilærehvordanvikansendehemmeligebeskjeder!
Kodeklubb-koden
Etchiffereretsystemforågjøreomvanligteksttilkodesomikkeandreskalkunnelese.Viskalbrukeetavdeeldsteogmest
berømtechifferene,Cæsar-chifferetellerCæsarskode-oppkaltetterGaiusJuliusCæsarsomsannsynligvisbruktedettilå
sendehemmeligebeskjeder.Deterneppedenbestemåtenåhindreandreiålesebeskjedenedine,mendetkommervitilbake
til.DetfinnesferdigemodulertilPythondukanbrukehvisduvillagenoesomskalværevanskeligåknekke,mennåskalvi
forsøkeålageCæsar-chifferetselv.
Startmedåtegneallebokstaveneiensirkel.
ÅA
ØB
ÆC
ZD
YE
XF
WG
VH
UI
TJ
SK
RL
QM
PON
Forålageenhemmeligbokstavfraenvanligbokstav,trengerviettallvikanbrukesomhemmelignøkkel.Jeglikertallet3,det
eretmagisktall,såvibrukerdet.
A+3=DT+3=WÅ+3=C
VibegynnermedAogtellerfremover3bokstaver:B,C,D.SåbokstavenAblirtilbokstavenD.Forådekodegjørvidetsamme,
menbaklengs.VibegynnermedDogtellerbakoverforåfåA.
Steg1:Alfabetet
HerkandufåtrøbbelmednorskebokstaveromduikkeharPython3.DuharPython2dersomdetstår2.6eller2.7iIDLE.Iså
fallmåduleggeen u forantekstsomerinni "" .Foreksempelbliralfabetetunder u"abcdefghijklmnopqrstuvwxyzæøå" . u -en
betyratteksteneravtypenUnicodesomstøtterallenorskebokstaver.
Sjekkliste
Førstmåvilærepythonalfabetet.ÅpneIDLEoglagennyfilmedkodenunder:
alphabet="abcdefghijklmnopqrstuvwxyzæ øå"
print(len(alphabet))
Nårdukjørerdetteprogrammetskaldetskriveut29.Passpåatduharmedallebokstavene,ellerskommerikkeden
hemmeligekodendintilåvirke.
Hvisduerfornøydmedalfabetetdittkanvibegynneåkodeenbokstav.
Steg2:Kodeenbokstav
Sjekkliste
Akkuratsomvigjordemedhjuletovenforkanvifinneposisjonentilenbokstavvedåtelleforover,ogsåbrukebokstaven
vienderoppmed.
Skrivinnkodenunderogkjørden:
alphabet="abcdefghijklmnopqrstuvwxyzæ øå"
letter="a"
secret=3
pos=alphabet.find(letter)
newpos=(pos+secret)
ifnewpos>=29:
newpos=newpos-29
secretletter=alphabet[newpos]
print(secretletter)
Vislåropphvor"a"erialfabetetogleggertildethemmeligetalletvårtforåtellefremover.Visjekkeromvihargått
rundt,hvisvihardetmåvigåenhelrundetilbakeigjenvedåtrekkefra29(detteerlittsommedgradene,åtrekkefra
360gjøratvierakkuratdervivar).Såslårvioppialfabetetigjenforåsehvilkenhemmeligebokstavvifikk.
Kjørkodenogsehvasomskjer.
Laosstaentittpåkodenigjen,menvitardetsakte.
Dutrengerikkeåskrivedette!Altsomstårbakfirkant-tegnetbryrpythonsegvanligvisikkeom,deterbare
kommentarertilmenneskersomskallesekoden.
#alphabeternavnetpåtekstenfraatilå
alphabet="abcdefghijklmnopqrstuvwxyz"
#Denhemmeligebokstaven(letter)ogdethemmeligetallet
#(secret)vibrukerforåkodedet
letter="a"
secret=3
#Finnposisjonentilbokstaven.Pythonvilgiosset
#tallfra0til28(pythontellerfra0)
pos=alphabet.find(letter)
#Gålikelangtfremoversomdethemmeligetalletsier
newpos=(pos+secret)
#Hvisviharteltforlangt,måvigåenrundetilbake
#foråfåettallmellom0og28
ifnewpos>=29:
newpos=newpos-29
#Slåoppdenneposisjonenforåsehvilkenbokstav
#ialfabetetsomstårder
secretletter=alphabet[newpos]
#Skrivdennebokstavenutpåskjermen
print(secretletter)
Determyepython-tingsomskjerher,menikkebliskremtomduikkeforståralttilåbegynnemed.Myeavdetteer
akkuratsomiscratch. ifnewpos>=29 erbareen if -setning,entingsombarekjørerkodenunderhvisdetsomstår
etter if ersant.En if -setningbrukereninnrykksblokk,akkuratsom for og def somviharsetttidligere.
Nåsomvikankodeenbokstav,hvamedådekodeen?
Steg3:Finnetilbakebokstavene
Akkuratsomikodenfradenforrigeoppgavenskalvifinneposisjonentilbokstaven,mendennegangenskalvigåbakoveri
alfabetetforådekode.
Sjekkliste
Forsøkåskrivinndennekodenogkjørden:
alphabet="abcdefghijklmnopqrstuvwxyzæ øå"
secret=17
secretletter="r"
pos=alphabet.find(secretletter)
newpos=pos-secret
ifnewpos<0:
newpos=newpos+29
letter=alphabet[newpos]
print(letter)
Steg4:Byggefunksjoner
LaosstakodensomlagerogleserCæsar-koderoggjøredenomtiltofunksjoner.Gidenenefunksjonennavnet encode og
denandrefunksjonennavnet decode .Tips:Dersomdualdriharhørtomfunksjoner,kandulesemeromdeiSkilpaddeskolen.
Foråfåenfunksjontilåsendetilbakeenverdibrukervi return .Dettegjøratvikanlagrefunksjonensresultattilenvariabelog
deretterbrukevariabelen.
Sjekkliste
Lagenfilsomserslikut:
alphabet="abcdefghijklmnopqrstuvwxyzæ øå"
defencode(letter,secret):
pos=alphabet.find(letter)
newpos=(pos+secret)
ifnewpos>=29:
newpos=newpos-29
returnalphabet[newpos]
defdecode(letter,secret):
pos=alphabet.find(letter)
newpos=(pos-secret)
ifnewpos<0:
newpos=newpos+29
returnalphabet[newpos]
print(encode("a",17))
print(decode("r",17))
Huskatdukanbruke'Tab'iIDLEforåfåinnrykk.Dukanogsåmerkedeleravkodenogrykkealtinnpåengang.
Prøvåkodeogdekodenoenbokstaver!
Steg5:Sendethemmeligordellerto,ogfinn
demtilbakeigjen
Nåharvinoenfunksjoner,laossbrukedemtilåkodeord.Vikommertilågåigjennomhverbokstaviordetogkodedethvis
detfinnesialfabetet(vihopperovertegnsompunktumogmellomrom).
Sjekkliste
Underdenyefunksjonenefraforrigeoppgavekanduskriveinnkodenunder(medandreord:beholddetdugjordei
oppgave4,ogleggtilkodenunder).
secret=17
message="helloworld"
output=""
forcharacterinmessage:
ifcharacterinalphabet:
output=output+encode(character,secret)
else:
output=output+character
print(output)
secret=17
message="yvååckcfåu"
output=""
forcharacterinmessage:
ifcharacterinalphabet:
output=output+decode(character,secret)
else:
output=output+character
print(output)
Kjørprogrammetogsehvasomskjer.
Denførstedelenavkodenburdeskriveut"yvååckcfåu",somerdenhemmeligeversjonenav"helloworld".Denandre
delendekoderdetigjenogskriverut"helloworld"
Steg6:Dekodingavnoenhemmelige
beskjeder
Herernoenhemmeligebeskjeder,forsøkådekodedem!
daczjymcgyzcdmwwzf? ,hemmelighetener21.
æxkxånwnnæbnwwnwnmrwn ,hemmelighetener9.
Prøvåsendenoenbeskjedertilvennenedine!HvamedålageetPython-programsomforsøkersegpåallemuligehemmelige
tallogforsøkeråknekkekoderselvomduikkekandethemmeligetallet?
Lisens: CodeClubWorldLimitedTermsofService Forfatter: OversattfraCodeClubUK
Oversetter: BjørnEinarBjartnes