-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCryptographie.py
122 lines (104 loc) · 4.63 KB
/
Cryptographie.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
from itertools import product
import time
import os
def Menu():
#Déclaration du menu principal
reponse = 1
while (reponse < 4) and (reponse != 0) :
print("\nMenu : ")
print("------")
print("")
print("01. Crypter un message")
print("02. Décrypter un message")
print("03. Casser une clé")
print("10. Quitter")
reponse = int(input("\nFaites votre choix : "))
if reponse == 1 :
#Demande le message à crypter et le clé de cryptage
mes=input("\nVeuillez écrire votre message à crypter ")
cle=input("\nVeuillez entrer votre clé de cyptage ")
print("\nVoici votre message crypté\n")
#Appel de la fonction de cryptage
crypteMessage(mes, cle)
elif reponse == 2 :
#Demande le message à décrypter et le clé de décryptage
mes=input("\nVeuillez écrire votre message à décrypter ")
cle=input("\nVeuillez entrer votre clé de décyptage ")
print("\nVoici votre message décrypté\n")
#Appel de la fonction de décryptage
decrypteMessage(mes, cle)
elif reponse == 3 :
#Demande le message à décrypter et le nombre de lettre
#constituant la clé de décryptage
mes=input("\nVeuillez écrire votre message à décrypter ")
nbLettres=int(input("\nVeuillez entrer le nombre de lettres que contient la clé "))
#Appel de la fonction de cassage de clés
hackCle(mes, nbLettres)
elif reponse == 10:
break
input("\nAppuyez sur une touche pour continuer ... ")
os.system('clear')
def createAlphaKey(car):
#Fonction servant à retouner un alphabet de cryptage
car=car.upper()#Met le caractère en majuscule
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
id=alphabet.index(car)#Recherche dans l'alphabet la position du caractère
alphakey=""
for i in range(26):
alphakey+=(alphabet[id])#crée l'alphabet de cryptage
id=(id+1)%26
return alphakey
def decrypteCar(car, alphakey):
#Fonction servant à retouner un caractère décrypté en utilisant un
#alphabet de cryptage
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
car=car.upper()#Met le caractère en majuscule
id=alphakey.index(car)#Recherche dans l'alphabet de cryptage la position du caractère crypté
return alphabet[id]
def decrypteMessage(mes, cle):
#Fonction servant à décrypter un texte en utilisant une clé
texte="\n"
id=0
for i in range(len(mes)):
if mes[i].isalpha():#Recherche les caractère alphanumériques
#Ecriture du texte décrypté en faisant appel à la fonction "decrypte"
#elle-même faisant appel à la fonction "createAlphaKey"
texte+=decrypteCar(mes[i],createAlphaKey(cle[id%len(cle)]))
id+=1
else:
#Recherche des caractères non alphanumériques
texte+=mes[i]
print(texte)
def crypteCar(car, alphakey):
#Fonction servant à retouner un caractère crypté en utilisant un
#alphabet de cryptage
car=car.upper()#Met le caractère en majuscule
alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
id=alphabet.index(car)#Recherche dans l'alphabet la position du caractère
return alphakey[id]
def crypteMessage(mes, cle):
#Fonction servant à décrypter un texte en utilisant une clé
texte="\n"
id=0
for i in range(len(mes)):
if mes[i].isalpha():#Recherche les caractère alphanumériques
#Ecriture du texte crypté en faisant appel à la fonction "crypte"
#elle-même faisant appel à la fonction "createAlphaKey"
texte+=crypteCar(mes[i],createAlphaKey(cle[id%len(cle)]))
id+=1
else:
#Recherche des caractères non alphanumériques
texte+=mes[i]
print(texte)
def hackCle(mes, nbLettres):
#Fonction servant à casser une clé de cryptage par force brute
debutTemps = time.time()
#Création de toutes les combinaisons possibles de l'alphabet pour un nombre
#de lettres donné ex: ('ABC', 2) --> AA, AB, AC, BA, BB, BC, CA, CB, CC
#Cela est réalisé par la fonction "product()"
for cle in (product("ABCDEFGHIJKLMNOPQRSTUVWXYZ", repeat=nbLettres)):
print("\nVoici le message pour la cle: ", ''.join(cle))
#Appel de la fonction "decrypteMessage
decrypteMessage(mes, cle)
print("\nTemps d execution : %s secondes ---" % (time.time() - debutTemps))
Menu()