Criptografía

Este código es una colaboración de: Melvin Guerrero

Descripción:

Programa de criptografía programado en Latino
Copiar todo el código
Descargar código .lat
Todos los códigos fueron copiados a su portapapeles

/*
Este programa de criptografía está escrito en Latino (un lenguaje de programación con sintaxis al Español).
El código de este programa está basado en el libro "Inventa tus propios juegos de computadora con Python",
del Capítulo 14 - Cifrado César, escrito por: Al Sweigart
y traducido por: Alfredo Carella, Alejandro Pernin, y Francisco Palm.
El código original se puede encontrar en la siguiente link https://inventwithpython.com/es/14.html

Programa de criptografía en Latino, creado el 1 de Junio, 2019 por Melvin Guerrero
*/


###### Código fuente del programa ######


TAM_MAX_CLAVE=25 //define el tamaño máximo de la contraseña

modo=""
clave=""
mensaje=""
traduccion=""


funcion obtenerModo()
 mientras modo != "encriptar" && modo != "desencriptar"
  escribir ("¿Deseas 'encriptar' o 'desencriptar' un mensaje? escriba la palabra completa")
  m=leer()
  modo = cadena.minusculas(m) //cambia a minusculas las letras
  si cadena.comparar(modo, "encriptar") == 0 || cadena.comparar(modo, "desencriptar") == 0 //comprueva que sea correcta
   retorno modo //si el usuario escribio "encriptar" o "desencriptar" devolvera el valor como positivo
  sino
   escribir ("Ingresa 'encriptar' o 'desencriptar'")
  fin
 fin
fin

funcion obtenerMensaje()
 escribir ("Ingresa tu mensaje: ")
 mesaje=leer() //lee el mensaje que el usuario este digitando y lo asigna a la variable
 
 retorno mesaje
fin

funcion obtenerClave()
 mientras verdadero
  escribir ("Ingresa el número de clave (1-"..TAM_MAX_CLAVE..")")
  clave=leer()
  si clave >=1 && clave <= TAM_MAX_CLAVE //comprueva que el numero digitado este dentro del rango marcado
   retorno clave //si el valor esta dentro del rango marcado devuelve el valor como positivo
  fin
 fin
fin

funcion obtenerMensajeTraducido(modo, mensaje, clave)
 si cadena.comparar(modo, "desencriptar") == 0
  clave=-clave //invierte el valor de clave a un numero positivo o negativo
 fin
 
 invMensaje=cadena.invertir(mensaje)//invierte el mensaje de texto para ser mas dificil decodificar para el humano
 
 desde (x=0;x<cadena.longitud(invMensaje);x++)
  si cadena.es_alfa(invMensaje[x]) == verdadero
   numBytes=cadena.char(cadena.bytes(invMensaje[x]))+clave//convierte el valor a bytes para ser sumados por la clave
   
   //verifica si el valor alfanumerico es MAYUSCULA o minuscula
   si cadena.char(cadena.bytes(invMensaje[x])) > 64 && cadena.char(cadena.bytes(invMensaje[x])) < 91 //mayusculas entre 65 a 90
    si numBytes > cadena.char(cadena.bytes("Z"))
     numBytes = numBytes - 26
    osi numBytes < cadena.char(cadena.bytes("A"))
     numBytes = numBytes + 26
    fin
   osi cadena.char(cadena.bytes(invMensaje[x])) > 96 && cadena.char(cadena.bytes(invMensaje[x])) < 123 //minusculas entre 97 a 122
    si numBytes > cadena.char(cadena.bytes("z"))
     numBytes = numBytes - 26
    osi numBytes < cadena.char(cadena.bytes("a"))
     numBytes = numBytes + 26
    fin
   fin
   
   traduccion=traduccion..cadena.char(numBytes)//convierte el valor de la suma de bytes a un nuevo caracter
  sino
   traduccion=traduccion..invMensaje[x]
  fin
 fin
 retorno traduccion//devuelve el valor de la traduccion al terminar de codificar
fin

//aqui se llaman las funciones para ser ejecutadas una por una
modo=obtenerModo()
mensaje=obtenerMensaje()
clave=obtenerClave()
traduccion=obtenerMensajeTraducido(modo, mensaje, clave)

escribir ("Tu texto traducido es:")
escribir (traduccion)

###### Fin del programa ######


0 Comentarios