Algoritmo de cifrado ROT13 en Ruby

Publicado por parzibyte en

Algoritmo ROT 13 en Ruby

El algoritmo ROT 13 es una variante del cifrado César (cuya implementación en Ruby ya vimos) en donde el número de rotaciones es 13; la mitad de la cantidad de letras que existen en el alfabeto inglés o como se le diga.

Algoritmo ROT 13 en Ruby

Algoritmo ROT 13 en Ruby

Hoy veremos cómo implementar una función que codifique y decodifique una cadena usando el algoritmo ROT 13 en el lenguaje de programación Ruby.

Ejemplo de ROT 13

Para dar una explicación rápida, la palabra “Hola” se convierte en “Ubyn” porque cada letra se mueve 13 posiciones. De igual manera, al rotar de nuevo la palabra “Ubyn” se convierte en “Hola”.

ROT 13 en Ruby

Esta es una simple variante del algoritmo César; pues rota 13 veces. Debido a que 13 es la mitad de 26, y 26 son las letras del alfabeto inglés, la misma función que codifica puede decodificar.

Por lo tanto la función queda así:

Recibe una cadena y regresa una cadena. No importa si la cadena ya está cifrada o está en texto plano, pues siempre rota 13 veces y por lo tanto, si ya está cifrada, la descifra; y si no, entonces la cifra.

Nota: esto seguramente ya lo saben todos pero no está de más repetirlo: ROT13 y César no son cifrados seguros, nunca se deben usar si no es para propósitos educativos.

Te invito a leer la implementación del algoritmo César en Ruby, pues ahí se explica todo con más detalles.

Probar ejercicio de ROT 13 en Ruby

Como siempre, aquí dejo un replit para que puedas probar el ejercicio sin instalar nada, aunque si quieres, aquí tengo un tutorial para instalar Ruby en Windows.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: