43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import string
|
|
|
|
"""
|
|
In cryptografie is caesar cipher een encryptietechniek
|
|
waarin elke letter in het alfabet vervangen wordt door
|
|
een letter die een aantal posities verder in het alfabet
|
|
staat. In dit geval implementeren we ROT-13, waarbij elke
|
|
letter dertien plaatsen opschuift. Een a zou bijvoorbeeld
|
|
een n worden. Schrijf hiervoor een encoder en decoder en
|
|
vertaal/codeer hiermee de volgende twee berichten:
|
|
Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!
|
|
Gebruik voor deze opgave een dictionary!
|
|
"""
|
|
|
|
|
|
def build_shift_dict(shift):
|
|
alphabet = string.ascii_lowercase + string.ascii_uppercase
|
|
|
|
shifted_lower = string.ascii_lowercase[shift:] + string.ascii_lowercase[0:shift]
|
|
shifted_upper = string.ascii_uppercase[shift:] + string.ascii_uppercase[0:shift]
|
|
|
|
shifted_alphabet = shifted_lower + shifted_upper
|
|
|
|
return {key: value for key, value in zip(alphabet, shifted_alphabet)}
|
|
|
|
|
|
def apply_shift(shift, message):
|
|
dictionary = build_shift_dict(shift)
|
|
|
|
for letter in message:
|
|
for letter in dictionary.values():
|
|
print(letter)
|
|
|
|
|
|
|
|
|
|
message = "Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!"
|
|
shift = 13
|
|
vertaling = apply_shift(shift, message)
|
|
print(vertaling)
|
|
|
|
|
|
|