Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Het Caesar-cijfer is een oud en veelgebruikt cijfer dat gemakkelijk te versleutelen en ontcijferen is. Het werkt door de letters van het alfabet te verschuiven om een geheel nieuw alfabet te creëren (ABCDEF zou meer dan 4 letters kunnen verschuiven en zou EFGHIJ worden).
Caesar Ciphers zijn niet de veiligste cijfers die er zijn, maar zijn goed voor kleine taken zoals het doorgeven van geheime notities of het iets sterker maken van wachtwoorden. Het is heel gemakkelijk om de code te ontcijferen, maar het kan vervelend zijn om er een te coderen als je het speciale alfabet niet uit je hoofd hebt.
Om dit proces makkelijker te maken, kunnen we gebruik maken van de kracht van computers, meer bepaald de programmeertaal Python.
Deze Instructable laat je zien hoe je een programma maakt dat op jouw commando berichten omzet in een cijfer.
Benodigdheden
Alles wat je nodig hebt is een Python-interpreter: IDLE, Pycharm en Thonny zijn enkele goede, gratis opties (ik gebruikte Pycharm)
Basiskennis van Python
Stap 1: Variabelen declareren en invoer verkrijgen
Om de string (tekst) waarden van het alfabet, bericht, shift, etc. daadwerkelijk op te slaan, moeten we variabelen gebruiken. We beginnen met het declareren van de variabelen 'alphabet', 'partialOne', 'partialTwo' en 'newAlphabet'. Ik heb de namen van de variabelen in Camel Case in mijn code geschreven (het eerste woord is een kleine letter en de tweede hoofdletter), maar je kunt het schrijven zoals je wilt, zolang je eraan denkt om het ook in de rest van de code te veranderen. De alfabetvariabele heeft de waarde "abcdefghijklmnopqrstuvwxyz". Alle andere variabelen zijn ingesteld op "", wat een lege tekenreeks is omdat we hun waarden nog niet hebben.
Wat dit doet, is het Gedeeltelijke systeem opzetten, dat is wat we gebruiken om daadwerkelijk de verschuiving te creëren. Dit wordt in een latere stap uitgelegd.
Hierna moeten we het bericht en de verschuivingswaarde van de gebruiker krijgen. Hiervoor gebruiken we de invoerfunctie. Dit deel van de code vraagt de gebruiker om een bericht en een nummer waarmee het alfabet kan worden verschoven.
CODE:
alfabet = "abcdefghijklmnopqrstuvwxyz"
gedeeltelijkeEen=""
gedeeltelijkeTwo=""
nieuwAlphabet=""
message = input("Voer het bericht in dat u wilt vertalen: ").lower()
key = int(input("Voer het nummer in waarmee u wilt verschuiven: "))
Stap 2: Het nieuwe alfabet maken
Nu om het verschoven alfabet te maken. Hiervoor gebruiken we het partiële systeem. Het gedeeltelijke systeem is waar de computer het alfabet in twee gedeeltelijke delen splitst (een mooie manier om delen te zeggen). Het eerste deel is hoe lang je het programma ook hebt verteld om te verschuiven, en het tweede deel is de rest. De computer schakelt de deelpartijen. Dat is precies wat de code doet, samen met de eerste verklaring, die zegt dat als de verschuiving 0 is, het nieuwe alfabet en het oude alfabet hetzelfde zijn, omdat je niets verandert.
Bijvoorbeeld:
Volgorde - 123456789
Gedeeltelijke één - 123; Gedeeltelijke twee - 456789
Nieuwe reeks - 456789123
CODE:
als toets == 0:
newAlphabet = alfabet
elif-toets > 0:
gedeeltelijkeEen = alfabet[:toets]
gedeeltelijkeTwee = alfabet[sleutel:]
newAlphabet = gedeeltelijkTwee + gedeeltelijkEen
anders:
gedeeltelijkeEen = alfabet[:(26 + toets)]
gedeeltelijkeTwee = alfabet[(26 + toets):]
newAlphabet = gedeeltelijkTwee + gedeeltelijkEen
Stap 3: Het bericht verschuiven
Nu hebben we ons alfabet en het nieuwe alfabet. Het enige dat overblijft is om het bericht om te zetten in de code.
Eerst stellen we een nieuwe variabele in en noemen deze 'encrypted' en stellen deze in op "". Dan schrijven we een heel ingewikkelde for-loop die elke letter in het bericht controleert en naar de nieuwe letter overschakelt. Het voert het resultaat uit en daar heb je het, een succesvol geconverteerde code!
CODE:
versleuteld=""voor message_index in range(0, len(message)):
if message[message_index] == " ":
versleuteld+= ""
voor alfabet_index in bereik(0, len(newAlphabet)):
if message[message_index] == alfabet[alphabet_index]:
versleuteld+= newAlphabet[alphabet_index]
afdrukken (versleuteld)
Stap 4: Extra
Bijgevoegd is het codebestand.