- Chiffrement Atbash
Le chiffrement Atbash est un système de substitution simple qui inverse l’ordre des lettres de l’alphabet. Par exemple, le schéma suivant montre la correspondance :
- ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ZYXWVUTSRQPONMLKJIHGFEDCBA
Pour déchiffrer, on peut utiliser les codes ASCII : soustraire la valeur de la lettre actuelle de celle de ‘Z’ (ou ‘z’) et ajouter celle de ‘A’ (ou ‘a’). Cela permet de réaliser un algorithme réversible. Voici un exemple à décoder : wl blf pmld zgyzhs kzhhdliw.
def chiffrer_atbash(texte):
res = ""
for c in texte:
if c.isalpha():
if c.isupper():
res += chr(ord('Z') - ord(c) + ord('A'))
else:
res += chr(ord('z') - ord(c) + ord('a'))
else:
res += c
return res
def dechiffrer_atbash(texte):
return chiffrer_atbash(texte)
while True:
print("1. Chiffrer")
print("2. Déchiffrer")
print("3. Quitter")
choix = input("Votre choix : ")
if choix == "1":
entree = input("Texte à chiffrer : ")
print("Résultat : " + chiffrer_atbash(entree))
elif choix == "2":
entree = input("Texte à déchiffrer : ")
print("Résultat : " + dechiffrer_atbash(entree))
elif choix == "3":
break
else:
print("Choix invalide.")
- Code Morse
Inventé en 1836, le code Morse encode lettres, chiffres et signes de ponctuation en séquences de points et de traits. Voici un dictionnaire Python qui implémente la table de correspondance standard :
CODE_MORSE = {
'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.',
'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---',
'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---',
'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-',
'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--',
'Z': '--..',
'1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
'6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----',
', ': '--..--', '.': '.-.-.-', '?': '..--..', '/': '-..-.',
'-': '-....-', '(': '-.--.', ')': '-.--.-'
}
Parfois, les symboles sont remplacés par ‘0’ et ‘1’ ou d’autres paires. Si un texte montre des séparaitons nettes (espaces), il peut s’agir de code Morse. Les fonctions suivantes permettent le codage et le décodage :
def encoder_morse(texte):
res = ""
for c in texte:
if c.upper() in CODE_MORSE:
res += CODE_MORSE[c.upper()] + " "
else:
res += c
return res
def decoder_morse(texte):
res = ""
for symbole in texte.split():
if symbole in CODE_MORSE.values():
for lettre, code in CODE_MORSE.items():
if code == symbole:
res += lettre
break
else:
res += symbole
return res
while True:
print("1. Encoder en Morse")
print("2. Décoder du Morse")
print("3. Quitter")
choix = input("Votre choix : ")
if choix == "1":
entree = input("Texte à encoder : ")
print("Résultat : " + encoder_morse(entree))
elif choix == "2":
entree = input("Code Morse à décoder : ")
print("Résultat : " + decoder_morse(entree))
elif choix == "3":
break
else:
print("Choix invalide.")