def mensajes_cifrados():
    tabla = crear_tabla(10)
    tabla_aux = crear_tabla(10)

    def desifrar(dato):
        dic = {'#?&': '0','abc': '1','def':'2','ghi':'3','jkl':'4','mnñ':'5','opq':'6','rst':'7','uvw':'8','xyz':'9'}
        cadena = ''
        for i in range (0, len(dato), 3):
            cadena += dic[dato[i:i+3]]
        return chr(int(cadena))

    def cifrar(dato):
        valor = str(ord(dato))
        valor_cirado = ['#?&','abc','def','ghi','jkl','mnñ','opq','rst','uvw','xyz']
        cadena = ''
        for num in valor:
            numInt = int(num)
            cadena += valor_cirado[numInt]
        cadena += "%"
        return cadena

    a = 'El hombre adecuado en el sitio equivocad0 puede cambiar el rumbo del mundo. Despierte, Sr. Freeman. Despierte y mire a su alrededor.'
    a_cifrado = ''

    print('Mensaje a cifrar:')
    print(a)
    print()

    # cifrando
    for letra in a:
        valor = buscar_ta(tabla, hash_diccionario, Palabra(letra, ''), 'palabra')
        cifrado = ''
        if valor is None:
            cifrado = cifrar(letra)
            palabra = Palabra(letra, cifrado)
            agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
        else:
            cifrado = valor.info.significado
        a_cifrado += cifrado
    print('Mensaje cifrado:')
    print(a_cifrado)
    print()

    lista = a_cifrado.split('%')
    lista.pop()

    # desifrando
    msj = ''
    for letras in lista:
        valor = buscar_ta(tabla_aux, bernstein_palabra, Palabra(letras, ''), 'palabra')
        decifrado = ''
        if valor is None:
            decifrado = desifrar(letras)
            palabra = Palabra(letras, decifrado)
            agregar_ta(tabla_aux, bernstein_palabra, palabra, 'palabra')
        else:
            decifrado = valor.info.significado
        msj += decifrado
    print('Mensaje decifrado')
    print(msj)
Beispiel #2
0
def DVader():
    legion = ['FL', ' TF', 'TK', 'CT', 'FN', 'FO']
    tablaL = crear_tabla(10)
    tablaC = crear_tabla(1500)

    for i in range(1500):
        legion = choice(legion)
        cod = randint(1000, 5000)
        st = Stormtroopers(legion, cod)
    agregar_ta(tablaL, bernstein_st, st, 'legión')
    agregar_ta(tablaC, hash_division_st, st, 'código')
    print('Sormtroopers ordenados por legion: ')
    barrido_ta(tablaL)
    print('Stormtroopers ordenados por código: ')
    barrido_ta(tablaC)
    pos = hash_division(537, tablaC)
    if tablaC[pos]:
        print('Stormtrooper designados para una misión de exploración')
        barrido_lista(tablaC[pos])
    print()
    pos = hash_division(781, tablaC)
    if tablaC[pos]:
        print('Stormrooper designados para una misión de asalto')
        barrido_lista(tablaC[pos])
    print()
    posl = bernstein('FN', tablaL)
    if tablaL[posl]:
        print('Stormroopers de la Legión FN')
        barrido_lista(tablaL[posl])
    print()
    posl = bernstein('CT', tablaL)
    if tablaL[posl]:
        print('Stormtroopers de la Legión CT')
        barrido_lista(tablaL[posl])
def personajes_sw():
    tabla = crear_tabla(20)
    personajes = ['Darth Vader', 'Luke Skywalker', 'Chewbacca', 'Yoda', 'R2D2', 'Jabba el Hutt',
                  'Obi-Wan Keobi', 'Han Solo', 'C3PO', 'Leia Organa', 'Rey', 'Poe Dameron',
                  'Finn', 'Lando Calrissian', 'Jabba el Hutt', 'Boba Fett', 'Jawa', 'Darth Maul',
                  'Anakin Skywalker', 'Bobba Fett', 'Jar Jar Binks', 'Darth Sidious', 'Kylo Ren',
                  'Obi-Wan Kenobi', 'Greddo', 'Wilhuff Tarkin', 'Owen Lars', 'Breha Organa']
    pos = 0
    for i in range(0, len(personajes)):
        nom = personajes[pos]
        dato_sw = Personaje(nom)
        agregar_tc(tabla, bernstein_star_wars, dato_sw)
        pos += 1
    print('Tabla de personajes de Star Wars con', len(tabla), 'posiciones')
    barrido_tc(tabla)

    # porcentaje de personajes cargados
    porc_tabla = (cantidad_tc(tabla)*100)/len(tabla)
    print('Porcentaje usado de la tabla', porc_tabla)
    print()

    if porc_tabla > 75:
        print('El factor de carga de la tabla supero el 75%. Haciendo rehashing...')
        nueva_tabla = crear_tabla(len(tabla)*2)
        for dato in tabla:
            if dato is not None:
                agregar_tc(nueva_tabla, bernstein_star_wars, dato)
        print('Nueva tabla con', len(nueva_tabla), 'posiciones')
        barrido_tc(nueva_tabla)
        porc_nueva_tabla = (cantidad_tc(nueva_tabla)*100)/len(nueva_tabla)
        print('Porcentaje usado de la nueva tabla', porc_nueva_tabla)
    else:
        print('El porcentaje de la tabla es menor a 75%')
def guia_telefono():
    tabla = crear_tabla(20)
    guiatel = Guia_Tel(randint(400000, 499999), 'Juan Fernando', 'Quintero', 'Bogota 543')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Marcelo', 'Gallardo', 'Figueroa Alcorta 57')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Gonzalo', 'Martínez', 'Madrid 912')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Rodolfo', 'D´Onofrio', 'Dubai 2142')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    print('NUMERO DE TELEFONO | NOMBRE | APELLIDO | DIRECCION')
    barrido_ta(tabla)
Beispiel #5
0
def administrar_contactos():
    tabla = crear_tabla(30)
    crear_contacto = Contacto('Victoria', 'Gimenez', '*****@*****.**')
    agregar_tc(tabla, hash_division_contacto, crear_contacto)
    crear_contacto = Contacto('Sofia', 'Hidalgo', '*****@*****.**')
    agregar_tc(tabla, hash_division_contacto, crear_contacto)
    crear_contacto = Contacto('Rocio', 'Suarez', '*****@*****.**')
    agregar_tc(tabla, hash_division_contacto, crear_contacto)
    crear_contacto = Contacto('Carlos', 'Vives', '*****@*****.**')
    agregar_tc(tabla, hash_division_contacto, crear_contacto)
    print('NOMBRE | APELLIDO | CORREO ELECTRÓNICO')
    barrido_tc(tabla)
def imperio_galactico():
    tabla_legion = crear_tabla(10)
    tabla_codigos = crear_tabla(1000)
    legiones = ['FL', 'TF', 'TK', 'CT', 'FN', 'FO']
    # a
    for i in range(2000):
        legion = choice(legiones)
        codigo = randint(1000, 9999)
        trooper = Stormtroopers(legion, codigo)
        agregar_ta(tabla_legion, bernstein_troopers, trooper, 'legion')
        agregar_ta(tabla_codigos, hash_division_troopers, trooper, 'codigo')
    # b
    print('Troopers ordenados por legion')
    barrido_ta(tabla_legion)
    print()
    print('Troopers ordenados por código')
    barrido_ta(tabla_codigos)
    print()
    # c
    posc = hash_division(537, tabla_codigos)
    if tabla_codigos[posc]:
        print('Trooper designados para una misión de exploración')
        barrido_lista(tabla_codigos[posc])
    print()
    posc = hash_division(781, tabla_codigos)
    if tabla_codigos[posc]:
        print('Trooper designados para una misión de asalto')
        barrido_lista(tabla_codigos[posc])
    print()
    # d
    posl = bernstein('FN', tabla_legion)
    if tabla_legion[posl]:
        print('Troopers de la Legión FN')
        barrido_lista(tabla_legion[posl])
    print()
    posl = bernstein('CT', tabla_legion)
    if tabla_legion[posl]:
        print('Troopers de la Legión CT')
        barrido_lista(tabla_legion[posl])
def contactos_personas():
    tabla = crear_tabla(20)
    datos = Contacto('Gordon', 'Freeman', '*****@*****.**')
    agregar_tc(tabla, bernstein_contactos, datos)
    datos = Contacto('Barney', 'Calhoun', '*****@*****.**')
    agregar_tc(tabla, bernstein_contactos, datos)
    datos = Contacto('Alyx', 'Vance', '*****@*****.**')
    agregar_tc(tabla, bernstein_contactos, datos)
    datos = Contacto('Eli', 'Vance', '*****@*****.**')
    agregar_tc(tabla, bernstein_contactos, datos)
    datos = Contacto('Isaac', 'Kleiner', '*****@*****.**')
    agregar_tc(tabla, bernstein_contactos, datos)
    print('NOMBRE | APELLIDO | CORREO ELECTRÓNICO')
    barrido_tc(tabla)
def tabla_pokemon():
    tabla = crear_tabla(50)
    nombres = ['Bulbasaur', 'Charmander', 'Squirtle', 'Pikachu', 'Spearow',
               'Dugtrio', 'Primeape', 'Terrakion', 'Tyrantrum', 'Golbat']
    tipos = ['Planta', 'Fuego', 'Agua', 'Eléctrico', 'Volador', 
             'Tierra',  'Lucha', 'Roca', 'Dragón', 'Veneno']
    pos = 0
    for i in range(len(nombres)):
        nom = nombres[pos]
        tip = tipos[pos]
        pokemon = Pokemon(randint(1, 999), nom, tip, randint(1, 50))
        agregar_tc(tabla, bernstein_pokemones, pokemon)
        pos += 1
    print('NUMERO | NOMBRE | TIPO | NIVEL')
    barrido_tc(tabla)
Beispiel #9
0
def guia_telefono():
    tabla = crear_tabla(20)
    guiatel = Guia_Tel(randint(400000, 499999), 'Genaro', 'Arijon',
                       'Parana 234')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Federico', 'Gonzalez',
                       'Rpublica de Libano')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Nahuel', 'Mani', 'Barrio 150')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    guiatel = Guia_Tel(randint(400000, 499999), 'Pedro', 'Fister',
                       '9 de julio 42')
    agregar_ta(tabla, hash_division_guiatel, guiatel, 'numero')
    print('NUMERO DE TELEFONO | NOMBRE | APELLIDO | DIRECCION')
    barrido_ta(tabla)
Beispiel #10
0
def sw():
    tabla = crear_tabla(20)
    personajes = [
        'Darth Vader', 'Luke Skywalker', 'Chewbacca', 'Yoda', 'R2D2',
        'Obi-Wan Keobi', 'Han Solo', 'C3PO', 'Rey', 'Finn', 'Leia Organa',
        'Jabba el Hutt', 'Jawa', 'Darth Maul', 'Bobba Fett', 'Jar Jar Binks',
        'Darth Sidious', 'Kylo Ren', 'Obi-Wan Kenobi', 'Greddo'
    ]
    pos = 0

    for i in range(0, len(personajes)):
        nombre = personajes[pos]
        dato = Personaje(nombre)
        agregar_tc(tabla, bernstein_star_wars, dato)
        pos += 1

    print('Tabla de personajes de Star Wars tiene ', len(tabla), ' posiciones')
    barrido_tc(tabla)

    porcentaje = (cantidad_tc(tabla) * 100) / len(
        tabla)  # porcentaje de personajes ingresados en la tabla
    print('El porcentaje usado de la tabla es de: ', porcentaje)
    print()

    if porcentaje > 75:
        print('La carga ha superado el 75%. REHASHING:')
        tabla_duplicada = crear_tabla(len(tabla) * 2)
        for dato in tabla:
            if dato is not None:
                agregar_tc(tabla_duplicada, bernstein_star_wars, dato)
        print('La nueva tabla tine :', len(tabla_duplicada), 'posiciones')
        barrido_tc(tabla_duplicada)
        porcentaje_tabla_duplicada = (cantidad_tc(tabla_duplicada) *
                                      100) / len(tabla_duplicada)
        print('Porcentaje usado en la tabla duplicada ',
              porcentaje_tabla_duplicada)
def catedras_universidad():
    tabla = crear_tabla(25)
    modalidad = ['Anual', 'Cuatrimestral']
    profe = ['Ing. Rodríguez', 'Prof. Gómez', 'Lic. García', 'Dr. Nuñez']
    catedra = Catedras(randint(1, 1000), 'Algorimtos y Estr. de Datos', choice(modalidad), randint(4, 8), choice(profe))
    agregar_tc(tabla, hash_division_catedra, catedra)
    catedra = Catedras(randint(1, 1000), 'Base de Datos', choice(modalidad), randint(4, 8), choice(profe))
    agregar_tc(tabla, hash_division_catedra, catedra)
    catedra = Catedras(randint(1, 1000), 'Prog. Orientada a Objetos', choice(modalidad), randint(4, 8), choice(profe))
    agregar_tc(tabla, hash_division_catedra, catedra)
    catedra = Catedras(randint(1, 1000), 'Diseño UX/UI', choice(modalidad), randint(4, 8), choice(profe))
    agregar_tc(tabla, hash_division_catedra, catedra)
    catedra = Catedras(randint(1, 1000), 'Analisis Matemático', choice(modalidad), randint(4, 8), choice(profe))
    agregar_tc(tabla, hash_division_catedra, catedra)
    print('CODIGO | CATEDRA | MODALIDAD | CANT. HORAS | DOCENTE')
    barrido_tc(tabla)
Beispiel #12
0
def carrera_u():
    tabla = crear_tabla(50)
    cargar_catedra = Catedra('Matematica Disccreta', 'Anual', '120 horas',
                             'Marisa Romero', 100)
    agregar_tc(tabla, hash_division_catedra, cargar_catedra)
    cargar_catedra = Catedra('Calcuo', 'Anuela', ' 130 horas',
                             'Silvina y Susana', 108)
    agregar_tc(tabla, hash_division_catedra, cargar_catedra)
    cargar_catedra = Catedra('Algebra', 'Anual', '145 horas',
                             'Eugenia y Jesica', 109)
    agregar_tc(tabla, hash_division_catedra, cargar_catedra)
    cargar_catedra = Catedra('Ecuaciones diferenciales y calculo',
                             'Cuatrimestral :C', '50', 'Julio, Silvina', 106)
    agregar_tc(tabla, hash_division_catedra, cargar_catedra)
    print(
        ' Nombre de la catedra  -   Modalidad   -   Horas -  Docente   - Codigo '
    )
    barrido_tc(tabla)
Beispiel #13
0
def tabla_pokemon():
    tabla = crear_tabla(1000)
    nombres = [
        'Groudon', 'Mew', 'Dialga', 'Palkia', 'Giratina', 'Darkrai', 'Kyogre',
        'Xerneas', ' Manaphy', 'Phione', 'El trio del lago',
        'Kyogre Primigenio', 'Kyurem', 'Reshiram', 'Zekrom'
    ]
    tipo = [
        'Tierra', 'Psiquico', 'Acero/Dragón', 'Agua/Dragon', 'Fantasma/Dragon',
        'Siniestro', 'Agua', 'Hada', 'Agua', 'Agua', 'Psiquico', 'Agua',
        'Dragón/Hielo', 'Dragón/Fuego', 'Dragón/Eléctrico'
    ]
    posicion = 0
    for i in range(len(nombres)):
        nom = nombres[posicion]
        tip = tipo[posicion]
        pokemon = Pokemon(randint(1, 500), nom, tip, randint(1, 60))
        agregar_tc(tabla, bernstein_pokemones, pokemon)
        posicion += 1

    print('Numero | Nombre | Tipo | Nivel')
    barrido_tc(tabla)
def diccionario():
    tabla = crear_tabla(26)

    # a
    palabra = Palabra('Hola', 'Es un saludo')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    palabra = Palabra('Hielo', 'Agua congelada')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    palabra = Palabra('Arbol', 'Parte de la naturaleza')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    print(tabla)
    barrido_ta(tabla)
    print()

    # b
    pos = buscar_ta(tabla, hash_diccionario, Palabra('Hola', ''), 'palabra')
    if(pos is not None):
        print('Palabra', pos.info.palabra, 'significado', pos.info.significado)
    print()

    # c
    print('Elemento eliminado:', quitar_ta(tabla, hash_diccionario, Palabra('Hielo', ''), 'palabra'))
    barrido_ta(tabla)
Beispiel #15
0
'''1. Desarrollar un algoritmo que permita implementar una tabla hash para representar un 
diccionario que permita resolver las siguientes actividades:'''


# EJ 1
class Palabra():
    def __init__(self, palabra, significado):
        self.palabra = palabra
        self.significado = significado

    def __str__(self):
        return self.palabra + ', ' + self.significado


#a. agregar una palabra y su significado al diccionario
tabla = crear_tabla(28)


def diccionario(tabla):
    palabra = Palabra('danzar', 'Bailar al ritmo de una música')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    palabra = Palabra('ballena', 'Animal mamífero marino')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    palabra = Palabra('madriguera',
                      'Cueva donde viven y se esconden algunos animales')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    palabra = Palabra('felicidad', 'Sentimiento de alegría o satisfacción')
    agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
    barrido_ta(tabla)

    #b. determinar si una palabra existe y mostrar su significado
Beispiel #16
0
def agencia():
    pass

    def hash_cadenas(string):
        hash = 5381
        for caracter in string:
            hash = ((hash << 5) + hash) + ord(caracter)
        return hash & 0xFFFFFFFF

    def calculo_comp(caracter):
        if ord(caracter) <= 78:
            return 79 + ord(caracter) - 32
        else:
            return 32 + ord(caracter) - 79

    def cod(carac):
        caracteres = ''
        car_ascii = ord(carac)
        car_ascii *= 37
        compl = calculo_comp(carac)
        car_ascii = str(car_ascii)

        for dig in car_ascii:
            digito = int(digito)
            num = pow(digito, 2) + compl
            carac = chr(int(num))
            caracteres += carac
        caracteres += chr(compl)
        return caracteres

    def codifica_segm(segmento):
        num_4_dig = ''
        pri_chr = segmento[:4]
        ult_chr = segmento[4]
        compl = ord(ult_chr)
        for elemento in pri_chr:
            elemento = ord(elemento) - compl
            elemento = int(sqrt(elemento))
            elemento = str(elemento)
            num_4_dig += elemento
        num_4_dig = int(num_4_dig)
        chr_ascii = int(num_4_dig / 37)
        car = chr(chr_ascii)
        return car

    def decod(mensaje):
        oracion = ''
        i = 0
        while i < len(mensaje):
            segmento = mensaje[i:i + 5]
            indice = hash_cadenas(segmento) % len(tabla)
            if (tabla[indice] is None):
                car = codifica_segm(segmento)
                tabla[indice] = car
            else:
                car = tabla[indice]
            oracion += car
            i += 5
        return oracion

    tabla = crear_tabla(240)
Beispiel #17
0
def sms_cifrados():
    tabla = crear_tabla(10)
    tabla_aux = crear_tabla(10)

    def desifrar_sms(dato):
        dic = {
            '#?&': '0',
            'abc': '1',
            'def': '2',
            'ghi': '3',
            'jkl': '4',
            'mnñ': '5',
            'opq': '6',
            'rst': '7',
            'uvw': '8',
            'xyz': '9'
        }
        cad = ''
        for i in range(0, len(dato), 3):
            cad += dic[dato[i:i + 3]]
        return chr(int(cad))

    def cifrar_sms(dato):
        val = str(ord(dato))
        val_cirado = [
            '#?&', 'abc', 'def', 'ghi', 'jkl', 'mnñ', 'opq', 'rst', 'uvw',
            'xyz'
        ]
        cad = ''
        for num in valor:
            num_ent = int(num)
            cad += val_cirado[num_ent]
        cad += "%"
        return cad

    mensaje = 'El amor y el odio, son dos lados de una misma cuchilla. –Jacqueline Carey.'
    mensaje_cifrado = ''

    print('Mensaje a cifrar: ')
    print(mensaje)
    print()

    for letra in mensaje:
        valor = buscar_ta(tabla, hash_diccionario, Palabra(letra, ''),
                          'palabra')
        cifrado = ''
        if valor is None:
            cifrado = cifrar_sms(letra)
            palabra = Palabra(letra, cifrado)
            agregar_ta(tabla, hash_diccionario, palabra, 'palabra')
        else:
            cifrado = valor.info.significado
        mensaje_cifrado += cifrado
    print('Mensaje cifrado:')
    print(mensaje_cifrado)
    print()

    lista = mensaje_cifrado.split('%')
    lista.pop()

    sms = ''
    for letras in lista:
        valor = buscar_ta(tabla_aux, bernstein_palabra, Palabra(letras, ''),
                          'palabra')
        decifrado = ''
        if valor is None:
            decifrado = desifrar_sms(letras)
            palabra = Palabra(letras, decifrado)
            agregar_ta(tabla_aux, bernstein_palabra, palabra, 'palabra')
        else:
            decifrado = valor.info.significado
        sms += decifrado
    print('El mensaje ha sido decifrado')
    print(sms)
def agencia_shield():
    pass

    def hash_cadenas(string):
        hash = 5381
        for caracter in string:
            hash = ((hash << 5) + hash) + ord(caracter)
        return hash & 0xFFFFFFFF

    def calculo_complemento(caracter):
        if ord(caracter) <= 78:
            return 79 + ord(caracter) - 32
        else:
            return 32 + ord(caracter) - 79

    # a
    def codifica4dig(caracter):
        caracteres = ''
        caracter_ascii = ord(caracter)
        caracter_ascii *= 37
        complemento = calculo_complemento(caracter)
        caracter_ascii = str(caracter_ascii)
        for digito in caracter_ascii:
            digito = int(digito)
            num = pow(digito, 2) + complemento
            caracter = chr(int(num))
            caracteres += caracter
        caracteres += chr(complemento)
        return caracteres

    def codifica_segm(segmento):
        num_cuatro_digitos = ''
        pri_chr = segmento[:4]
        ult_chr = segmento[4]
        complemento = ord(ult_chr)
        for elemento in pri_chr:
            elemento = ord(elemento) - complemento
            elemento = int(sqrt(elemento))
            elemento = str(elemento)
            num_cuatro_digitos += elemento
        num_cuatro_digitos = int(num_cuatro_digitos)
        chr_ascii = int(num_cuatro_digitos/37)
        caracter = chr(chr_ascii)
        return caracter

    def decodificar(mensaje):
        oracion = ''
        i = 0
        while i < len(mensaje):
            segmento = mensaje[i:i+5]
            indice = hash_cadenas(segmento) % len(tabla)
            if (tabla[indice] is None):
                caracter = codifica_segm(segmento)
                tabla[indice] = caracter
            else:
                caracter = tabla[indice]
            oracion += caracter
            i += 5
        return oracion

    tabla = crear_tabla(240)

    f = open('/home/iglesiasfacu/Facu Lic. en Sistemas/Algoritmos y Estructuras de Datos/TP6 - Hash/mensaje_1.txt', encoding='utf8')
    msj_codificado = f.read()
    f.close()
    msj_decodificado = decodificar(msj_codificado)
    print('Mensaje 1:')
    print(msj_decodificado)
    print()
    
    f = open('/home/iglesiasfacu/Facu Lic. en Sistemas/Algoritmos y Estructuras de Datos/TP6 - Hash/mensaje_2.txt', encoding='utf8')
    msj_codificado = f.read()
    f.close()
    msj_decodificado = decodificar(msj_codificado)
    print('Mensaje 2')
    print(msj_decodificado)
    print()

    f = open('/home/iglesiasfacu/Facu Lic. en Sistemas/Algoritmos y Estructuras de Datos/TP6 - Hash/mensaje_3.txt', encoding='utf8')
    msj_codificado = f.read()
    f.close()
    msj_decodificado = decodificar(msj_codificado)
    print('Mensaje 3')
    print(msj_decodificado)