#!/usr/bin/python
def encriptar(clave):
clave = clave.replace(" ", "_")
clave = list(clave)
texto = str(raw_input("\\nMensaje: "))
texto = texto.replace(" ", "_")
texto = list(texto)
num = ["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","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","_","0","1","2","3","4","5","6","7","8","9"]
# Imprime el diccionario
#for i in range(len(num)):
# print i, num[i]
# Saca los numeros de la palabra clave
cosa = []
for j in range(len(clave)):
for i in range(len(num)):
if num[i] == clave[j]:
cosa.append(i)
#print "cosa = ",cosa
lol = [] # La palabra en numeros
# Convierte las palabras en numeros
for j in range(len(texto)):
for i in range(len(num)):
if num[i] == texto[j]:
#print i, num[i], j, texto[j]
lol.append(i)
#print texto, len(texto)
#print lol, len(lol)
x = 0
print "\\n *------------------------------------*\\n"
# Hace la operacion
temp =[]
for i in range(len(lol)):
lal = ((lol[i]+cosa[x])%(len(num)))
#print i, "|", x," | ",num[lol[i]],lol[i],"+",num[cosa[x]],cosa[x],"%",len(num),"=",lal
temp.append(lal)
x += 1
if x > (len(cosa)-1):
x = 0
resultado = []
# Pasa los numeros de las operaciones por el diccionario
#print len(temp), temp
for i in range(len(temp)):
#print i, temp[i]
resultado.append(num[temp[i]])
# Hace sumatoria de la lista
cifrado = ""
for i in range(len(temp)):
cifrado += resultado[i]
print "Mensaje cifrado: ",cifrado,"\\n"
def desencriptar(clave):
clave = clave.replace("_", " ")
clave = list(clave)
texto = str(raw_input("\\nMensaje: "))
texto = texto.replace("_", " ")
texto = list(texto)
num = ["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","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"," ","0","1","2","3","4","5","6","7","8","9"]
cosa = []
for j in range(len(clave)):
for i in range(len(num)):
if num[i] == clave[j]:
cosa.append(i)
lol = [] # La palabra en numeros
# Convierte las palabras en numeros
for j in range(len(texto)):
for i in range(len(num)):
if num[i] == texto[j]:
#print i, num[i], j, texto[j]
lol.append(i)
x = 0
print "\\n *------------------------------------*\\n"
# Hace la operacion
temp =[]
for i in range(len(lol)):
lal = ((len(num)+lol[i]-cosa[x])%(len(num)))
#print i, "|", x," | ",num[lol[i]],lol[i],"+",num[cosa[x]],cosa[x],"%",len(num),"=",lal
temp.append(lal)
x += 1
if x > (len(cosa)-1):
x = 0
resultado = []
# Pasa los numeros de las operaciones por el diccionario
#print len(temp), temp
for i in range(len(temp)):
#print i, temp[i]
resultado.append(num[temp[i]])
# Hace sumatoria de la lista
cifrado = ""
for i in range(len(temp)):
cifrado += resultado[i]
print "Mensaje desencriptado: ", cifrado
def main():
done = False
while done == False:
print "\\n *------------------------------------*\\n"
print " Encriptar = 0 \\n Desencriptar = 1 \\n Salir = 2\\n"
op = int(raw_input("Que tarea vamos a ejecutar: "))
if op >= 2:
done = True
else:
clave = str(raw_input("\\nIngresa una palabra clave: "))#"M4ST3R"
if op == 1:
desencriptar(clave)
else:
encriptar(clave)
main()