Autor
|
Tema: Invertir una función en Python. (Leído 3,519 veces)
|
jam man
Desconectado
Mensajes: 32
|
Hola!!!, estoy haciendo un programa en Python de cifrado Polybios, la cuestión es de que ya tengo la primera parte del código que es cifrar una palabra o frase, este es el código: texto = raw_input ("Palabra a cifrar: ").lower() diccionario = {'a':'aa', 'b':'ab', 'c':'ac', 'd':'ad', 'e':'ae', 'f':'ba', 'g':'bb', 'h':'bc', 'i':'bd', 'j':'bd', 'k':'be', 'l':'ca', 'm':'cb', 'n':'cc', 'ñ':'cc', 'o':'cd', 'p':'ce', 'q':'da', 'r':'db', 's':'dc', 't':'dd', 'u':'de', 'v':'ea', 'w':'eb', 'x':'ec', 'y':'ed', 'z':'ee'} textoleet = '' for v in texto: if v in diccionario.keys(): textoleet += diccionario[v] else: textoleet += v print(textoleet)
pero el detalle es hacer lo contrario, que al momento de ingresar una palabra o frase ya cifrada, ahora que lo descifre, ejemplo: si ingreso "PYTHON", la palabra cifrada seria "ceedddbccdcc" y ahora quiero que haga lo contrario que al ingresar cualquier texto, lo descifre.
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
este tema es un dejavú. ¿es un ejercicio de alguna clase? bueno, ahora es lo mismo pero lees el valor en lugar de la clave y la cadena cada 2 caracteres: algo asi: mientras cadena < que largo de cifrada tomar primeros 2 caracteres y buscar valor en diccionario limpia = limpia + clave sumar 2 caracteres a cifrada mostrar limpia
|
|
|
En línea
|
|
|
|
jam man
Desconectado
Mensajes: 32
|
si es para una materia de Seguridad Informática.
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
ok, en base a tu código hice basicamente lo mismo , con una pequeña modificación para descifrar #-*- coding:utf 8 -*- diccionario = {'a':'aa', 'b':'ab', 'c':'ac', 'd':'ad', 'e':'ae', 'f':'ba', 'g':'bb', 'h':'bc', 'i':'bd', 'j':'bd', 'k':'be', 'l':'ca', 'm':'cb', 'n':'cc', 'o':'cd', 'p':'ce', 'q':'da', 'r':'db', 's':'dc', 't':'dd', 'u':'de', 'v':'ea', 'w':'eb', 'x':'ec', 'y':'ed', 'z':'ee'} def cifrar(): texto = input ("Palabra a cifrar: ").lower() textoleet = '' for v in texto: if v in diccionario.keys(): textoleet += diccionario[v] else: textoleet += v print(textoleet) def descifrar(): texto = input ("Palabra a descifrar: ").lower() textoleet = '' inicio= 0 final = 2 while inicio < len(texto) : v=texto[inicio:final] inicio+=2 final+=2 for g,w in diccionario.items(): if w == v: textoleet+= g print(textoleet) cifrar() descifrar()
seguramente hay formas mejores pero es la que se me ocurrió primero. otra cosa, revisa tu diccionario porque la n y la ñ tienen el mismo valor, por eso para simplificar saqué la ñ del mio.
|
|
« Última modificación: 14 Octubre 2015, 09:39 am por tincopasan »
|
En línea
|
|
|
|
jam man
Desconectado
Mensajes: 32
|
Bueno la cuestión con la "Ñ" es de que tiene la misma coordenada que la "N", lo mismo pasa con la "J" y con la "I", esto de acuerdo a la tabla del cifrado polybios: https://infow.wordpress.com/2008/11/13/criptografia-clasica-ii-polybios/y al momento de descifrar ya es cuestión del usuario interpretarlo. Y muchas gracias!!! Supongo que es lo mismo pero con coordenadas números.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Por que ésta pequeña función de invertir una lista enlazda funciona?
Programación C/C++
|
ShadowA7X
|
1
|
2,138
|
25 Noviembre 2014, 01:01 am
por avesudra
|
|
|
Invertir claves de un diccionario por comprensión en python.
Scripting
|
jam man
|
5
|
5,377
|
10 Octubre 2015, 23:09 pm
por jam man
|
|
|
MOVIDO: Invertir claves de un diccionario por comprensión en python.
Programación General
|
Eleкtro
|
0
|
1,931
|
22 Septiembre 2015, 10:30 am
por Eleкtro
|
|
|
MOVIDO: Invertir una función en Python.
Programación General
|
Eleкtro
|
0
|
1,747
|
13 Octubre 2015, 18:14 pm
por Eleкtro
|
|
|
Invertir una Lista en C - La funcion Pop no me da el ultimo elemento.?
Programación C/C++
|
palacio29
|
3
|
4,081
|
27 Octubre 2016, 01:01 am
por MAFUS
|
|