Criptofantasía: Rot13 y Cripto XOR - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html) +--- Tema: Criptofantasía: Rot13 y Cripto XOR (/thread-526.html) |
Criptofantasía: Rot13 y Cripto XOR - Grandamakulo - 10-08-2021 Edito para: Incluir la elegante solución de @cogier y para mostrar una comparativa de tiempos de cada uno de los métodos. El C está ausente por lo dicho al final del hilo —vamos, que no funciona—:
Código: Pues a raíz de otro comentario me puse a brujulear por la página Rosetta Code, que me encanta, pero hacía un tiempo que no me pasaba por ahí, cuando vi que el algoritmo de Rot13 no estaba implementado para Gambas3. El algoritmo Rot13, para los pocos que no lo sepan, es una manera de casi encriptar, de encriptar por diversión con un sistema bastante débil, mensajes en foros y antiguas listas de correos por el cifrado de César con un desplazamiento de 13 sobre 26 letras —es decir, la letra 1, la "A", se sustituye por la 14, "N", la "B" por la "O"... la "M" por la "A"—. Sí, justo un desplazamiento que es la mitad del abecedario anglosajón, por eso es reversible, es decir, al aplicar dos veces el algoritmo se obtiene el texto original. Pues me puse a implementarlo de las dos maneras habituales: por sustitución directa o por rotación, y eso es lo que os traigo: Rot13_a y Rot13_b. —Oiga, pero bueno, si hay una Rot13_c que no funciona. ¿Qué timo es éste? Sí, ustedes disculpen. He estado intentando hacer la sustitución directa tal cual se hace en otro lenguajes, por ejemplo con el «tr» de Linux —vaaaale, podría haber empleado «shell» o «exec», pero me parecía que lo fundamental es emplear el propio Gambas3—, pero las funciones Gambas3 no tienen el mismo modo de funcionamiento. De todas maneras, si a alguien se le ocurre cómo, que chille. —Venga, aceptamos pulpo, etc. Pero, ¿qué c.ñ. es eso de CriptoXOR? Mire usté, ya puestos me lie y, recordando esos juegos que tenían encriptados archivos con las características de las armas, coches o puntuaciones de forma poco, er, fuerte, y con un sistema sencillo y reversible, pues codifiqué algo parecido a lo que yo empleaba para conseguir el mejor tanque de un juego de los 90: A=((A XOR B) XOR B). En fin, me voy a almorzar —ahora se llama brunch—. Os dejo con el código. —Pero bueno, ¿todo este rollo para una chorrada? Pero no se vaya, oiga..., oiga... Código: ' Gambas module file Salidas: Código: FacilCript.Main.19: En un lugar de La Mancha con tildes: áéíóúÁÉÍÓÚüÜñÑ¡!1234567890 PS.—Si alguien encuentra cómo simplificar los algoritmos, que chille, me hace el favor. Y ya puestos, que lo suba a Rosetta, que a mí me da pereza RE: Criptofantasía: Rot13 y Cripto XOR - tercoide - 10-08-2021 El algoritmo XOR lo use en mis comienzos en la programación. Es bastante tonto, pero funciona para cosas simples. Creo que se usaba en las primeras versiones de .DOC y .XLS que se guardaban con clave. Muy débiles por cierto. Yo habia hecho un programin en VB que decodificaba el contenido con dicho algoritmo, entre otras hackeadas . Lejos de ser un experto en el tema, me parece que la fuerza de una codificación se basa en ocultar el algoritmo, mas que alargar la clave. RE: Criptofantasía: Rot13 y Cripto XOR - cogier - 10-08-2021 Este código funciona para el alfabeto inglés. Código: Public Sub TextBox1_Change() RE: Criptofantasía: Rot13 y Cripto XOR - Grandamakulo - 13-08-2021 Una consulta muy rápida: ¿alguien sabe por qué no funciona esto?: Código: Public Function Rot13_c(Texto As String) As String Si lo pruebo en la consola funciona perfectamente. Al ejecutarlo en Gambas3 no da error, simplemente no devuelve resultado RE: Criptofantasía: Rot13 y Cripto XOR - Shordi - 13-08-2021 A bote pronto te sobra el Wait. Si pones to variable, el programa ya se detiene y deja la salida en la variable. Por otra parte Exec se lleva fatal con los pipes, redireccionamientos y demás. Prueba con Shell. El motivo es que Exec no tiene un entorno de shell propio para ejcutarse y eso hace que todas esos truquitos de encadenar comandos y demás no esté disponible. Prueba con Shell "echo " & Shell$(Texto) & "|tr a-zA-Z n-za-mN-ZA-M " To Total Saludos RE: Criptofantasía: Rot13 y Cripto XOR - Grandamakulo - 13-08-2021 ¡¡Perfecto!!, funcionó. —Y lo entendí, que es lo fundamental .— |