Cifrado por sustituci n
Para esta tarea se implementará un cifrado de la siguiente forma; a diferencia del cifrado Cesar donde el alfabeto modificado sigue conservando el mismo orden:'abcdefghijklmnopqrstuvwxyz' original
'defghijklmnopqrstuvwxyzabc' con un desplazamiento de 3 posiciones
Ahora implementaremos un algoritmo donde cada letra tendrá su correspondiente, pero ahora elnuevo alfabeto no guardará el mismo orden:
'abcdefghijklmnopqrstuvwxyz' original
'hvzixtjkuldgmwcfbynpqraeso' alfabeto para cifrar
casa -> zhnh
Aquí la llave no es un número, sino el alfabetocompleto, el cual se requiere para descifrar el mensaje.
La tarea consiste en realizar las siguientes actividades:
1.-Escriba la función que dada una cadena y un alfabeto llave, devuelva la cadenacifrada.
def cifraSustituye(cadena, alfabetoLlave):
…………..
return nuevaCadena
Pruébela con:
miAlfabeto = 'hvzixtjkuldgmwcfbynpqraeso'
cadenaCifrada = cifraSustituye("casa", miAlfabeto)
printcadenaCifrada
La salida debe ser: “zhnh”
2.- Escriba la función que dada la cadena cifrada y el alfabeto llave devuelva la cadena original.
def descifraSustituye(cadena, alfabetoLlave):
…………
returnnuevaCadena
Pruébela con:
miAlfabeto = 'hvzixtjkuldgmwcfbynpqraeso'
cadenaCifrada = cifraSustituye("casa", miAlfabeto)
cadenaDescifrada = descifraSustituye(cadenaCifrada, miAlfabeto)
print "cadenadescifrada: ", cadenaDescifrada
la salida debe ser: “casa”
3.- Como resulta engorroso escribir nuevos alfabetos escriba un algoritmo que dado un alfabeto cree otro en orden aleatorio
defcreaDiccAleatorio(alfabeto):
……….
return nuevoAlfabeto
Puede probarlo de la siguiente forma:
alfabeto = 'abcdefghijklmnopqrstuvwxyz'
print creaDiccAleatorio(alfabeto)
la salida puede verse como:‘czbeilrxosptnmquyhvjdwkagf’
Pero como se genera de forma aleatoria puede ser de cualquier otra forma.
Para poder utilizar números aleatorios es necesario que agregue al inicio de su programa:
import random...
Regístrate para leer el documento completo.