Está en la página 1de 11

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE

HUAMANGA FACULTAD DE INGENIERIA DE MINAS,


GEOLOGIA Y CIVIL ESCUELA PROFESIONAL DE INGENIERÍA
DE SISTEMAS

“IMPLEMENTACION DE CIFRADOS EN PYTHON”

DOCENTE : Ing. JANAMPA PATILLA, Hubner

CURSO : SEGURIDAD INFORMATICA (IS - 444)

ALUMNOS : BOCANEGRA ZORRILLA, Jhonnatan Javier

AYACUCHO - PERU

2021
1. CIFRADO DE SUSTITUCION O DE CESAR

1.1. CODIGO DEL CIFRADO POR SUSTITUCION


1.1.1. FUNCION cifrar_sustitucion(k,mensaje)

1.1.2. FUNCION descifrar_sustitucion(k,mensaje)


1.2. PROBANDO EL PROGRAMA
Ejecutamos el programa:

Colocamos los valores, k=5 y procedemos a escribir el mensaje “ESTO ES UNA PRUEBA”
Y Hacemos clic en CIFRAR MENSAJE, a continuación nos muestra el texto cifrado:
Procedemos a hacer clic en DECIFRAR MENSAJE CIFRADO y nos muestra el mensaje
descifrado.
2. CIFRADO POR TRANSPOSICION

2.1. METODOS QUE SE UTILIZARON

import random
import numpy as np

lista_caracteres=["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"]

def generar_palabra_aleatoria(num_palabra):

contador=1
global lista_clave
palabra_clave=""
while num_palabra>=contador:

num_aleatorio=random.randint(0,25)
palabra_clave+=lista_caracteres[num_aleatorio]
contador+=1

lista_clave=(list(str(palabra_clave)))
return palabra_clave

#lista_clave=list(str(generar_palabra_aleatoria))

def generar_lista(mensaje,num_palabra):

global lista_salida_total
global lista_anexada
lista_anexada=[]
global salida_parcial
global sub_lista
sub_lista=[]
global lista_general
lista_general=[]

#print(lista_clave)
contador=0
global lista_ordenada

if len(mensaje)>=0:

for letra in mensaje:

sub_lista.append(letra)
print("----LISTA DE MENSAJE----")
print(sub_lista)
print("----LISTA DE CLAVE----")
print(lista_clave)

if len(sub_lista)>=len(lista_clave):

modulo=len(sub_lista)%num_palabra

if modulo==0:
x = len(lista_clave)

lista_final= lambda sub_lista, x: [sub_lista[i:i+x] for i


in range(0, len(sub_lista), x)]

salida_parcial=lista_final(sub_lista, x)

print('LISTA MENSAJE FINAL', salida_parcial)


else:

x = len(lista_clave)

lista_final= lambda sub_lista, x: [sub_lista[i:i+x] for i


in range(0, len(sub_lista), x)]

for i in range(len(sub_lista)):
sub_lista.append("-")

if len(sub_lista)%num_palabra==0:
salida_parcial=lista_final(sub_lista, x)
break
print('LISTA MENSAJE FINAL', salida_parcial)
lista_anexada.append(lista_clave)
lista_salida_total=lista_anexada + salida_parcial
print("-------lista total--------")
return lista_salida_total

def ordenar():

global lista_ordenada
lista_ordenada=[]
columna_d = []
matrix=np.array(lista_salida_total)

for fila in range(len(lista_salida_total[0])):

columna = matrix[:, fila]


columna_d.append(list(columna))

print("------columnda D-----")
columna_d.sort()
lista_ordenada.append(columna_d)
return lista_ordenada

generar_palabra_aleatoria(6)

def cifrar():
texto=""
lista_final=[]
lista_salida=[]
lista_oficial=[]
lista_oficial=[]
global lista_salida_total_2
global salida_semi

print("............LISTA ORDENADA................")
print(lista_ordenada)

lista_oficial.append(lista_ordenada[0])
print(".............OFICIAL 0000...............")
print(lista_oficial[0:2])
print(".............OFICIAL 1111...............")
print(lista_oficial[0:1])
lista_oficial_2=(lista_oficial[0])
print(".............OFICIAL 22222...............")
print(lista_oficial_2[0])
print(type(lista_oficial_2))

for i in range(len(lista_oficial_2)):
listita=lista_oficial_2[i][1:6]
lista_salida.append(listita)
print(len(lista_oficial_2))
print(lista_salida)
contador=0
j=0
for i in range(len(lista_salida)):
for j in range(len(lista_salida[0])):
#lista_final.append(lista_salida[i])
letra=lista_salida[i][j]
texto+=letra

return texto
2.2. PRUEBA DEL PROGRAMA
3. CIFRADO DE 1 RELLENO

3.1. CODIGO

import random
from math import *

ord("A")
#print(ord("A"))
lista_numeros_binarios=[]

lista_relleno_binarios=[]

def binarizar(decimal):

numero_string=''
binario = ''
#texto=""
contador=0
while decimal // 2 != 0:
binario = str(decimal % 2) + binario
decimal = decimal // 2
numero_string=str(decimal) + binario
#print(numero_string)

while len(numero_string)<=6 :
numero_string="0"+ numero_string

return numero_string

def conversion_mensaje_binario(mensaje):
#num_bi=""
lista_salida=[]
global salida_parcial
salida_parcial=[]
#lista_relleno_binarios=[]
for letra in mensaje:

#print(letra)
num_bi=binarizar(ord(letra))
lista_numeros_binarios.append(list(num_bi))
print("--------MENSAJE BINARIO---------")
print(lista_numeros_binarios)

for i in range(len(mensaje)):
relleno_random=random.randint(1,26)
num=binarizar(relleno_random)
lista_relleno_binarios.append(list(num))
print("--------RELLENO BINARIO---------")
print(lista_relleno_binarios)
print("---------------------------------")
for i in range(len(lista_numeros_binarios)):
for j in range(len(lista_numeros_binarios[0])):
numerito=lista_numeros_binarios[i][j]
rellenito=lista_relleno_binarios[i][j]
#(a or b) and not (a and b)
operar=0
operar=not (numerito==rellenito)
if operar== True:
operar=1
lista_salida.append(str(operar))
else :
operar=0
lista_salida.append(str(operar))

print(lista_salida)
x = 7

lista_final= lambda lista_salida, x: [lista_salida[i:i+x] for i in ra


nge(0, len(lista_salida), x)]

salida_parcial=lista_final(lista_salida, x)

#print('LISTA MENSAJE FINAL', salida_parcial)


return lista_relleno_binarios

def cifrar():
global lista_oficial
lista_oficial=[]
texto=""
texto_cifrado=""
for i in range(len(salida_parcial)):
for j in range(len(salida_parcial[0])):
letra=salida_parcial[i][j]
texto+=letra
#print(letra)
while len(texto)==7:
lista_oficial.append(texto)
#print(lista_oficial)
texto=""
break
return lista_oficial

def binario_a_decimal(lista):
lista_numero=[]
palabra_cifrada=""

for i in range(len(lista)):
contador=0
num=0
sum=0
for letra in lista[i]:
contador+=1

if letra=='1':
sum=sum+ pow(2,7-contador)

else:
sum+=num

lista_numero.append(sum)
print(lista_numero)

for i in lista_numero:
n=int(i)
letra=chr(n)
palabra_cifrada+=letra
#print(sum)
#num=0
print(palabra_cifrada)
print("---------------------------------------")

return palabra_cifrada

3.2. PRUEBA DEL PROGRAMA

También podría gustarte