-
Notifications
You must be signed in to change notification settings - Fork 0
/
cifrado.py
92 lines (79 loc) · 2.46 KB
/
cifrado.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
# -*- coding: utf-8 -*-
import random
#crea el abecedario y lo pone en una lista
def alphabet():
abcd=list(map(chr, range(32, 127)))
return abcd
#crea la llave de cifrado y la pone en una lista
def createKey():
abcd=alphabet()
criptographicKey=list(abcd)
noRepeted=[random.randint(0,94)]
for i in range(0,len(criptographicKey),1):
criptographicKey[i]=abcd[assigment(noRepeted)]
return criptographicKey
#debido a que se utiliza el comando random las letras se repiten
#esta funcion evita letras repetidas en la llave de cifrado
def assigment(noRepeted):
if len(noRepeted)<95:
repeted=0
assig=random.randint(0,94)
for i in range(0,len(noRepeted),1):
if noRepeted[i]==assig:
repeted+=1
break
if repeted==0:
noRepeted.append(assig)
return assig
else:
return assigment(noRepeted)
else:
return 0
#cifra el mensaje
def cypher(msg_lst,abcd,criptographicKey):
encriptedMsg=[]
for i in range(0,len(msg_lst),1):
for j in range(0,len(abcd),1):
if msg_lst[i]==abcd[j]:
encriptedMsg.append(criptographicKey[j])
break
print('\nCypher message:\n\t', end='')
print(''.join(encriptedMsg))
return encriptedMsg
#descifra el mensaje
def Decypher(encriptedMsg,RealKey,abcd):
deEncriptedMsg=[]
for i in range(0,len(encriptedMsg),1):
for j in range(0,len(RealKey),1):
if encriptedMsg[i]==RealKey[j]:
deEncriptedMsg.append(abcd[j])
break
print('Decypher message:\n\t', end='')
print(''.join(deEncriptedMsg))
return deEncriptedMsg
def run():
#password
MASTER_KEY='PLATZI'
#genera el abcdario
abcd=list(alphabet())
#genera la llave de cifrado real
RealKey=createKey()
msg=str(input('\nType the massage:'))
msg_lst=list(msg)
print('\nMessage:\n\t', end='')
print(''.join(msg_lst))
#si ingresas el password incorrecto se crea una llave de
#cifrado falsa y no podras volver a descifrar el msj
ask_master_key=str(input('\nPassword:'))
if MASTER_KEY==ask_master_key:
criptographicKey=list(RealKey)
else:
criptographicKey=createKey()
#cifrar
encriptedMsg=cypher(msg_lst,abcd,criptographicKey)
#descifrar
print('\nDecyphering...')
input()
deEncriptedMsg=Decypher(encriptedMsg,RealKey,abcd)
if __name__=='__main__':
run()