def validacionCesar(argumentos): if (len(argumentos) != 6): print "\nEl numero de parametros es incorrecto" print "Revisar la ayuda del algoritmo de cesar: python principal.py -sc\n" else: if (argumentos[2] == "-c"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print 'No se encontro el archivo ' + argumentos[3] else: texto = ((f.read().replace(' ', '')).rstrip('\n')).upper() f.close() clave = cesar.obtenerEntero(argumentos[4]) if (clave != -1): cesar.cifrarCesar(texto, clave, argumentos[5]) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print 'No se encontro el archivo ' + argumentos[3] else: texto = ((f.read().replace(' ', '')).rstrip('\n')).upper() f.close() clave = cesar.obtenerEntero(argumentos[4]) if (clave != -1): cesar.descifrarCesar(texto, clave, argumentos[5]) else: print "\nEl modo ", argumentos[2], " es incorrecto" print "Revisar la ayuda del algoritmo de cesar: python principal.py -sc\n"
def descVigenere(archEnt, clave, archSal, cod): doc = archEnt palabra = "" k = "" f = archivo.abrirArchivo(doc) h = archivo.abrirArchivo(clave) if f == '' or h == '': if (f == ''): print('No se encontro el archivo ' + doc) else: print('No se encontro el archivo ' + clave) else: for pal in f.readlines(): palabra = palabra + pal f.close() lg = len(palabra) for cla in h.readlines(): k = k + cla h.close() lk = len(k) i = 0 j = 0 m = "" alf = alfabeto.getAlfabeto() la = alfabeto.tamAlfabeto() while (i < lg): if (j < lk): dato = alf[((alf.index(palabra[i]) - alf.index(k[j])) % la)] m = m + dato else: dato = alf[((alf.index(palabra[i]) - alf.index(m[j - lk])) % la)] m = m + dato i = i + 1 j = j + 1 n = archSal if (cod == ""): fichero = archivo.escribirArchivo(n, m) else: fichero = archivo.escribirArchivo64(n, m) if fichero == '': print('Ocurrio un error al intentar escribir en ', n) else: fichero.close() print( "\n*********************************************************************" ) print("SE GENERO EL ARCHIVO ", n, " CON EL MENSAJE EN CLARO") print( "*********************************************************************\n\n\n" )
def descifradoMR(arch,masc,cod): mensaje="" perforaciones=[] f = archivo.abrirArchivo(arch) p = archivo.abrirArchivo(masc) if f=='' or p=='': print ('No se encontro el archivo ',arch) sys.exit() for pal in f.readlines(): mensaje=mensaje+pal f.close() numC=len(mensaje) n=int(math.ceil(math.sqrt(numC))) for per in p.readlines(): perforaciones.append(per) p.close() if(int(perforaciones[0])<n): print ("El tamaño de la matriz es muy pequeño, debe tener un tamaño minimo de ",n) sys.exit() matriz=[] mascara=[] n=int(perforaciones[0]) for i in range(n): matriz.append(["null"]*n) mascara.append(["-"]*n) llenarMatriz(matriz,mensaje,n) llenarMacara(mascara,perforaciones) mascara2=rotar(mascara,n) mascara3=rotar(mascara2,n) mascara4=rotar(mascara3,n) verificarMascara(mascara,mascara2,mascara3,mascara4) men="" men=men+consMensaje(matriz,mascara) men=men+consMensaje(matriz,mascara2) men=men+consMensaje(matriz,mascara3) men=men+consMensaje(matriz,mascara4) sal = arch.replace("cif","dec") if(cod==""): fichero = archivo.escribirArchivo(sal,men) else: fichero = archivo.escribirArchivo64(sal,men) if fichero=='': print ('Ocurrio un error al intentar escribir en ', sal) else: fichero.close() print ("\n*********************************************************************") print ("SE GENERO EL ARCHIVO ",sal," CON EL MENSAJE EN CLARO") print ("*********************************************************************\n\n\n")
def descVigenere(archEnt,clave,archSal): doc=archEnt palabra="" f = archivo.abrirArchivo(doc) if f == '': print 'No se encontro el archivo '+doc else: for pal in f.readlines(): palabra=palabra+pal f.close() lg=len(palabra) k=clave lk=len(k) i=0 m="" alf=alfabeto.getAlfabeto() la=alfabeto.tamAlfabeto() while(i<lg): if(i<lk): dato=alf[((alf.index(palabra[i])-alf.index(k[i]))%la)] m=m+dato else: dato=alf[((alf.index(palabra[i])-alf.index(m[i-lk]))%la)] m=m+dato i=i+1 n = archSal fichero = archivo.escribirArchivo(n,m) if fichero=='': print 'Ocurrio un error al intentar escribir en ', n else: fichero.close() print "\n*********************************************************************" print "SE GENERO EL ARCHIVO ",n," CON EL MENSAJE EN CLARO" print "*********************************************************************\n\n\n"
def validacionFrecuencia( argumentos ): #funcion validacionFrecuencia recibe el argumento de entrada en consola if ( len(argumentos) != 3 ): ## pregunta si la posisicion del argumento de entrada es diferente de tamaño 3 print("\nEl número de parámetros es incorrecto") print( "Revisar la ayuda del algoritmo de criptoanalisis por frecuencia: python3 proyecto.py -fre\n" ) else: f = archivo.abrirArchivo( argumentos[2] ) #llama la funcion abrirArchivo del archivo "archivo" y iguala la posisicion 2 del argumento en la variable f if f == '': print('No se encontro el archivo ' + argumentos[2]) else: texto = "" nomArchivoDec = argumentos[2].replace( '.cif', '.dec' ) ##TOMA el valor de argumentos en la posicion 2 y reemplaza por la extension .cif o .dec for pal in f.readlines( ): #lee las lineas del archivo recorre la cadena de texto texto = texto + pal f.close() start_time = time() #inicializa el tiempo de ejecucion del script frecuencia.analisisFrecuencia( texto, nomArchivoDec ) #llama la funcion analisisFrecuencia en el archivo frecuencia.py y le envia las variables texto y nomArchivoDec elapsed_time = time( ) - start_time #finaliza el tiempo de ejecucion del script print( "Tiempo transcurrido: %.10f segundos." % elapsed_time) #imprime el tiempo de ejecucion total del script
def validacionAfin(argumentos): if (len(argumentos) != 7): print "\nEl numero de parametros es incorrecto" print "Revisar la ayuda del algoritmo de afin: python principal.py -sa\n" else: if (argumentos[2] == "-c"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print 'No se encontro el archivo ' + argumentos[3] else: texto = ((f.read().replace(' ', '')).rstrip('\n')).upper() f.close() a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print 'El nuemero a es invalido' print 'El numero debe ser primo con el tamano del alfabeto' else: b = afin.obtenerB(argumentos[5]) if (b != -1): afin.cifrarAfin(texto, a, b, argumentos[6]) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print 'No se encontro el archivo ' + argumentos[3] else: texto = ((f.read().replace(' ', '')).rstrip('\n')).upper() f.close() a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print 'El nuemero a es invalido' print 'El numero debe ser primo con el tamano del alfabeto' else: b = afin.obtenerB(argumentos[5]) if (b != -1): afin.descifrarAfin(texto, a, b, argumentos[6]) else: print "\nEl modo ", argumentos[2], " es incorrecto" print "Revisar la ayuda del algoritmo de afin: python principal.py -sa\n"
def cargarAlf(): A = archivo.abrirArchivo(nomAlfabeto) if A == '': print('No se encontro el archivo ' + nomAlfabeto) for letra in A.readlines(): if (letra[0] != "\xc3" and letra[0] != "\xc2" and letra[0] + letra[1] != "\\n"): Alfabeto.append(letra[0]) elif (letra[0] + letra[1] == "\\n"): Alfabeto.append('\n') else: Alfabeto.append(letra[0] + letra[1]) #Alfabeto.append(letra) A.close()
def cifraVigenere(archEnt,clave,archSal): doc=archEnt palabra="" f = archivo.abrirArchivo(doc) if f=='': print 'No se encontro el archivo '+doc else: for pal in f.readlines(): palabra=palabra+pal f.close() k=clave lk=len(k) i=0 c="" lg=len(palabra) alf=alfabeto.getAlfabeto() la=alfabeto.tamAlfabeto() #imprimirTexto(palabra) #auxiliar=acomodarTexto(palabra) #imprimirTexto(auxiliar) while(i<lg): if(i<lk): if(palabra[i]!='\xc3'): ##print i dato= alf[((alf.index(palabra[i])+alf.index(k[i]))%la)] c=c+dato else: dato= alf[((alf.index(palabra[i]+palabra[i+1])+alf.index(k[i]))%la)] i=i+1 c=c+dato else: if(palabra[i]!='\xc3'): dato=alf[((alf.index(palabra[i])+alf.index(palabra[i-lk]))%la)] c=c+dato else: ##print palabra[i]+palabra[i+1] dato=alf[((alf.index(palabra[i]+palabra[i+1])+alf.index(palabra[i-lk]))%la)] i=i+1 c=c+dato i=i+1 n = archSal fichero = archivo.escribirArchivo(n, c) if fichero=='': print 'Ocurrio un error al intentar escribir en ', n else: fichero.close() print "\n*********************************************************************" print " SE GENERO EL ARCHIVO ", n," CON EL MENSAJE CIFRADO" print "*********************************************************************\n\n\n"
def validacionFrecuencia(argumentos): if (len(argumentos) != 3): print("\nEl número de parámetros es incorrecto") print( "Revisar la ayuda del algoritmo de criptoanalisis por frecuencia: python3 principal.py -caf\n" ) else: f = archivo.abrirArchivo(argumentos[2]) if f == '': print('No se encontro el archivo ' + argumentos[2]) else: texto = "" nomArchivoDec = argumentos[2].replace('.cif', '.dec') for pal in f.readlines(): texto = texto + pal f.close() start_time = time() frecuencia.analisisFrecuencia(texto, nomArchivoDec) elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time)
def validacionCesar(argumentos): texto = "" if (len(argumentos) == 6): if (argumentos[5] == "-c64"): if (argumentos[2] == "-c"): f = archivo.abrirArchivo64(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: texto = f clave = cesar.obtenerEntero(argumentos[4]) if (clave != -1): start_time = time() cesar.cifrarCesar(texto, clave, argumentos[3] + ".cif", "-c64") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() clave = cesar.obtenerEntero(argumentos[4]) nomArchivoDec = argumentos[3].replace('.cif', '.dec') if (clave != -1): start_time = time() cesar.descifrarCesar(texto, clave, nomArchivoDec, "-c64") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) else: print( "Si deseas codificar o decodificar usa la bandera -c64 en lugar de ", argumentos[5]) else: if (len(argumentos) != 5): print("\nEl número de parámetros es incorrecto") print( "Revisar la ayuda del algoritmo de cesar: python3 principal.py -sc\n" ) else: if (argumentos[2] == "-c"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() clave = cesar.obtenerEntero(argumentos[4]) if (clave != -1): start_time = time() cesar.cifrarCesar(texto, clave, argumentos[3] + ".cif", "") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() clave = cesar.obtenerEntero(argumentos[4]) nomArchivoDec = argumentos[3].replace('.cif', '.dec') if (clave != -1): start_time = time() cesar.descifrarCesar(texto, clave, nomArchivoDec, "") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) else: print("\nEl modo ", argumentos[2], " es incorrecto") print( "Revisar la ayuda del algoritmo de cesar: python3 principal.py -sc\n" )
def validacionAfin(argumentos): texto = "" if (len(argumentos) == 7): if (argumentos[6] == "-c64"): if (argumentos[2] == "-c"): f = archivo.abrirArchivo64(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: texto = f a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print('El núemero a es invalido') print( 'El número debe ser primo con el tamaño del alfabeto' ) else: b = afin.obtenerB(argumentos[5]) if (b != -1): start_time = time() afin.cifrarAfin(texto, a, b, argumentos[3] + ".cif", "-c64") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print('El número a es invalido') print( 'El número debe ser primo con el tamano del alfabeto' ) else: b = afin.obtenerB(argumentos[5]) nomArchivoDec = argumentos[3].replace( '.cif', '.dec') if (b != -1): start_time = time() afin.descifrarAfin(texto, a, b, nomArchivoDec, "-c64") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) else: print("\nEl modo ", argumentos[2], " es incorrecto") print( "Revisar la ayuda del algoritmo de afin: python3 principal.py -sa\n" ) else: print( "Si deseas codificar o decodificar usa la bandera -c64 en lugar de ", argumentos[6]) else: if (len(argumentos) != 6): print("\nEl número de parámetros es incorrecto") print( "Revisar la ayuda del algoritmo de afín: python3 principal.py -sa\n" ) else: if (argumentos[2] == "-c"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print('El núemero a es invalido') print( 'El número debe ser primo con el tamaño del alfabeto' ) else: b = afin.obtenerB(argumentos[5]) if (b != -1): start_time = time() afin.cifrarAfin(texto, a, b, argumentos[3] + ".cif", "") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) elif (argumentos[2] == "-d"): f = archivo.abrirArchivo(argumentos[3]) if f == '': print('No se encontro el archivo ' + argumentos[3]) else: for pal in f.readlines(): texto = texto + pal f.close() a = afin.obtenerA(argumentos[4]) if (a != -1): if (afin.verificarCoprimo(a) != True): print('El número a es invalido') print( 'El número debe ser primo con el tamano del alfabeto' ) else: b = afin.obtenerB(argumentos[5]) nomArchivoDec = argumentos[3].replace( '.cif', '.dec') if (b != -1): start_time = time() afin.descifrarAfin(texto, a, b, nomArchivoDec, "") elapsed_time = time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) else: print("\nEl modo ", argumentos[2], " es incorrecto") print( "Revisar la ayuda del algoritmo de afin: python3 principal.py -sa\n" )
def cifraVigenere(archEnt, clave, archSal, cod): doc = archEnt palabra = "" k = "" if (cod == ""): f = archivo.abrirArchivo(doc) else: f = archivo.abrirArchivo64(doc) h = archivo.abrirArchivo(clave) if f == '' or h == '': if (f == ''): print('No se encontro el archivo ' + doc) else: print('No se encontro el archivo ' + clave) else: if (cod == ""): for pal in f.readlines(): palabra = palabra + pal f.close() else: palabra = f for cla in h.readlines(): k = k + cla h.close() lk = len(k) i = 0 j = 0 c = "" lg = len(palabra) alf = alfabeto.getAlfabeto() la = alfabeto.tamAlfabeto() flag = 1 # imprimirTexto(palabra) # try: while (i < lg): if (j < lk): if (cod == ""): dato = alf[((alf.index(palabra[i]) + alf.index(k[j])) % la)] else: p1 = chr(palabra[i]) dato = alf[((alf.index(p1) + alf.index(k[j])) % la)] c = c + dato else: if (cod == ""): dato = alf[( (alf.index(palabra[i]) + alf.index(palabra[j - lk])) % la)] else: p1 = chr(palabra[i]) p2 = chr(palabra[j - lk]) dato = alf[((alf.index(p1) + alf.index(p2)) % la)] c = c + dato i = i + 1 j = j + 1 if (flag != -1): n = archSal fichero = archivo.escribirArchivo(n, c) if fichero == '': print('Ocurrio un error al intentar escribir en ', n) else: fichero.close() print( "\n*********************************************************************" ) print(" SE GENERO EL ARCHIVO ", n, " CON EL MENSAJE CIFRADO") print( "*********************************************************************\n\n" ) else: print("La ejecución se detuvo")
def cifradoMR(arch,masc,cod): mensaje="" perforaciones=[] if(cod==""): f = archivo.abrirArchivo(arch) else: f = archivo.abrirArchivo64(arch) p = archivo.abrirArchivo(masc) if f=='' or p=='': if f=='': print ('No se encontro el archivo ',arch) if p=='': print ('No se encontro el archivo ',masc) sys.exit() if(cod==""): for pal in f.readlines(): mensaje=mensaje+pal f.close() else: mensaje=f numC=len(mensaje) n=int(math.ceil(math.sqrt(numC))) for per in p.readlines(): perforaciones.append(per) p.close() if(int(perforaciones[0])<n): print ("El tamaño de la matriz es muy pequeño, debe tener un tamaño minimo de ",n) sys.exit() x=int(numC/4) if(x<(numC/4.0)): x=x+1 if((len(perforaciones)-1)!=x): print ("El numero de perforaciones 'X' no es el correcto") print ("La mascara debe tener ",x," perforaciones"," y tiene :",(len(perforaciones)-1)) sys.exit() matriz=[] mascara=[] n=int(perforaciones[0]) for i in range(n): matriz.append(["null"]*n) mascara.append(["-"]*n) llenarMacara(mascara,perforaciones) if(len(mascara)==n and len(mascara[i])==n): mascara2=rotar(mascara,n) mascara3=rotar(mascara2,n) mascara4=rotar(mascara3,n) else: print ("La mascara debe tener tamaño ",n,"x",n) sys.exit() verificarMascara(mascara,mascara2,mascara3,mascara4) numP=len(perforaciones)-1 l=0 hubicarLetras(matriz,mascara,mensaje,l) l=l+numP hubicarLetras(matriz,mascara2,mensaje,l) l=l+numP hubicarLetras(matriz,mascara3,mensaje,l) l=l+numP hubicarLetras(matriz,mascara4,mensaje,l) l=l+numP completrar(matriz,mensaje,numC) cif=generarCif(matriz,cod) sal = arch+".cif" print (sal) fichero = archivo.escribirArchivo(sal, cif) if fichero=='': print ('Ocurrio un error al intentar escribir en ', n) else: fichero.close() print ("\n*********************************************************************") print (" SE GENERO EL ARCHIVO ", sal," CON EL MENSAJE CIFRADO") print ("*********************************************************************\n\n")