def analisisFrecuencia( criptograma, nomArchivoSalida): ## funcion analisisFrecuencia recibe dos parametros listaFrecu = frecuencias( criptograma ) # recibe e iguala criptograma de la funcion frecuencias en la variable listaFrecu k = verificarHipostesis( listaFrecu) ### recibe la clave de la funcion verificarHipotesis print('La clave con la que se cifró es: ', k) ###imprime la clave con la que se cifro mensajeClaro = "" i = 0 while (i < len(criptograma)): #mientras i sea menor que el criptograma ci = alfabeto.getPosicion( criptograma[i] ) #llama funcion getPosicion de archivo alfabeto y le iguala el valor de criptograma[i] a la variable ci modulo = ( ci - k ) % TAM_ALFABETO #aplica formula de cesar y la iguala a variable modulo mensajeClaro = mensajeClaro + abc[ modulo] #mensajeclaro se iguala al mensajeclaro + variable abc posicion modulo i += 1 #aumenta el contador i f = archivo.escribirArchivo( nomArchivoSalida, mensajeClaro ) #llama a la funcion escribir Archivo de el archico "archico.py" recibe dos parametros y los iguala a f if f == '': print('Ocurrio un error al intentar escribir en', nomArchivoSalida) else: print('El mensaje descifrado se guardo correctamente en', nomArchivoSalida)
def cifrarCesar(texto, clave, nombreArchivoSalida, cod): mensajeCifrado = "" flag = 1 i = 0 while (i < len(texto)): if (cod == "-c64"): mi = alfabeto.getPosicion(chr(texto[i])) else: mi = alfabeto.getPosicion(texto[i]) if (mi == -1): if (cod == "-c64"): print( "El caracter ", chr(texto[i]), " no se encuentra en el alfabeto, revise la ayuda en el menú principal para añadirlo" ) else: print( "El caracter ", texto[i], " no se encuentra en el alfabeto, revise la ayuda en el menú principal para añadirlo" ) flag = -1 break else: modulo = (mi + clave) % TAM_ALFABETO mensajeCifrado = mensajeCifrado + abc[modulo] i += 1 if (flag == -1): print("La ejecución se detuvo") else: f = archivo.escribirArchivo(nombreArchivoSalida, mensajeCifrado) if f == '': print('Ocurrio un error al intentar escribir en', nombreArchivoSalida) else: print('El mensaje cifrado se guardo correctamente en', nombreArchivoSalida) f.close() sys.stdin.flush()
def analisisFrecuencia(criptograma, nomArchivoSalida): listaFrecu = frecuencias(criptograma) k = verificarHipostesis(listaFrecu) print('La clave con la que se cifró es: ', k) mensajeClaro = "" i = 0 while (i < len(criptograma)): ci = alfabeto.getPosicion(criptograma[i]) modulo = (ci - k) % TAM_ALFABETO mensajeClaro = mensajeClaro + abc[modulo] i += 1 f = archivo.escribirArchivo(nomArchivoSalida, mensajeClaro) if f == '': print('Ocurrio un error al intentar escribir en', nomArchivoSalida) else: print('El mensaje descifrado se guardo correctamente en', nomArchivoSalida)
def descifrarAfin(texto, a, b, nombreArchivoSalida, cod): x = modinv(a, TAM_ALFABETO) mensajeClaro = "" i = 0 while (i < len(texto)): ci = alfabeto.getPosicion(texto[i]) modulo = (x * (ci - b)) % TAM_ALFABETO mensajeClaro = mensajeClaro + abc[modulo] i += 1 if (cod == ""): f = archivo.escribirArchivo(nombreArchivoSalida, mensajeClaro) f.close() else: f = archivo.escribirArchivo64(nombreArchivoSalida, mensajeClaro) if f == '': print('Ocurrio un error al intentar escribir en', nombreArchivoSalida) else: print('Se guardo correctamente el mensaje descifrado en', nombreArchivoSalida) sys.stdin.flush()
def descifrarCesar(criptograma, clave, nombreArchivoSalida, cod): mensajeClaro = "" i = 0 while (i < len(criptograma)): ci = alfabeto.getPosicion(criptograma[i]) modulo = (ci - clave) % TAM_ALFABETO mensajeClaro = mensajeClaro + abc[modulo] i += 1 if (cod == ""): f = archivo.escribirArchivo(nombreArchivoSalida, mensajeClaro) else: f = archivo.escribirArchivo64(nombreArchivoSalida, mensajeClaro) if (f == -1): print( 'El mensaje no fue codificado antes de cifrar\nLa ejecución se detuvo' ) elif f == '': print('Ocurrio un error al intentar escribir en', nombreArchivoSalida) else: print('El mensaje descifrado se guardo correctamente en', nombreArchivoSalida) f.close() sys.stdin.flush()
def encontrarK(letraMi, letraCi): #funcion para encontrark mi = alfabeto.getPosicion(letraMi) #toma la letra en el alfabeto ci = alfabeto.getPosicion(letraCi) #toma la letra cifrada del texto return (ci - mi) % TAM_ALFABETO #retorna la formula para aencontrar k
def encontrarK(letraMi, letraCi): mi = alfabeto.getPosicion(letraMi) ci = alfabeto.getPosicion(letraCi) return (ci - mi) % TAM_ALFABETO