
Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01

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.
Aanbevolen:
Mappen synchroniseren met Python: 5 stappen

Mappen synchroniseren met Python: deze instructable laat je zien hoe je twee mappen (en alle mappen daarin) synchroon kunt houden, zodat de ene een directe kopie van de andere is. Ideaal voor het back-uppen van werk zowel lokaal, naar een cloud/netwerkserver of een USB-stick. Geen ervaring met programmeren is n
Python-introductie - Katsuhiko Matsuda & Edwin Cijo - Basis: 7 stappen

Python Introductie - Katsuhiko Matsuda & Edwin Cijo - Basis: Hallo, we zijn 2 studenten in MYP 2. We willen je de basis leren van het coderen van Python. Het werd eind jaren 80 gemaakt door Guido van Rossum in Nederland. Het werd gemaakt als een opvolger van de ABC-taal. Zijn naam is "Python" omdat wanneer
QR-codescanner met OpenCV in Python: 7 stappen

QR-codescanner met OpenCV in Python: in de wereld van vandaag zien we dat QR-code en streepjescode bijna overal worden gebruikt, van productverpakkingen tot online betalingen en tegenwoordig zien we QR-codes zelfs in restaurants om het menu te zien. Dus nee betwijfel of het nu de grote gedachte is. Maar heb je ooit
Python gebruiken om niet-Engelse toetsenbordindelingen te leren: 8 stappen

Python gebruiken om niet-Engelse toetsenbordindelingen te leren: Hallo, ik ben Julien! Ik ben een student computerwetenschappen en vandaag ga ik je laten zien hoe je Python kunt gebruiken om jezelf de toetsenbordindeling van een niet-Engelse taal aan te leren. Veel talen leren tegenwoordig online, en één ding kunnen mensen begrijpen
Bill Cipher Pyramid-luidspreker - Ajarnpa

Bill Cipher Pyramid Speaker: Dit project is geïnspireerd op het piramideontwerp voor Bill Cipher uit de show Gravity Falls en is gemaakt voor Design Technology Class. Momenteel is het product nog niet af en dient dit als productieplan. De pagina wordt bijgewerkt wanneer de produ