Пример #1
0
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"
                )
Пример #2
0
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")
Пример #3
0
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 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")