Saltar al contenido
EjemplosEnglishEspacio →

Cifrado César

Cifra un mensaje corriendo cada letra del abecedario.

Nivel
Avanzado
Tema:
Texto
Conceptos:
Entrada y salida
Texto
Para
Matemáticas
Abrir en Codoritmo

Ejecuta, modifica y depura este ejemplo en el navegador.

Lo que aprenderás

Buscas cada letra en el abecedario con Subcadena dentro de un Para anidado. MOD hace que después de la z se vuelva a empezar en la a.

Código

caesar-cipher.psc · 28 líneas
Algoritmo CifradoCesar    Definir abecedario, mensaje, cifrado, letra Como Caracter    Definir desplazamiento, i, j, posicion, nueva Como Entero    abecedario <- "abcdefghijklmnopqrstuvwxyz"    Escribir "Mensaje a cifrar:"    Leer mensaje    Escribir "Desplazamiento (1 a 25):"    Leer desplazamiento    cifrado <- ""    Para i <- 1 Hasta Longitud(mensaje) Hacer        letra <- Minusculas(Subcadena(mensaje, i, i))        // Buscamos la letra en el abecedario        posicion <- 0        Para j <- 1 Hasta 26 Hacer            Si Subcadena(abecedario, j, j) = letra Entonces                posicion <- j            FinSi        FinPara        Si posicion = 0 Entonces            cifrado <- cifrado + letra        SiNo            // MOD hace que después de la z vuelva a empezar en la a            nueva <- (posicion - 1 + desplazamiento) MOD 26 + 1            cifrado <- cifrado + Subcadena(abecedario, nueva, nueva)        FinSi    FinPara    Escribir "Mensaje cifrado: ", cifradoFinAlgoritmo

Diagrama de flujo

Cada bloque del diagrama corresponde a una instrucción del código.

Algoritmo CifradoCesarSíNoSíNoAlgoritmo CifradoCesarAlgoritmo CifradoCesarDefinir abecedario, mensaje, cifrado, letra Como CaracterDefinir abecedario, mensaje,cifrado, letra Como CaracterDefinir desplazamiento, i, j, posicion, nueva Como EnteroDefinir desplazamiento, i, j,posicion, nueva Como Enteroabecedario <- "abcdefghijklmnopqrstuvwxyz"abecedario <-"abcdefghijklmnopqrstuvwxyz"Escribir "Mensaje a cifrar:"Escribir "Mensaje a cifrar:"Leer mensajeLeer mensajeEscribir "Desplazamiento (1 a 25):"Escribir "Desplazamiento (1 a25):"Leer desplazamientoLeer desplazamientocifrado <- ""cifrado <- ""Para i <- 1 Hasta Longitud(mensaje) HacerPara i <- 1 HastaLongitud(mensaje)letra <- Minusculas(Subcadena(mensaje, i, i))letra <-Minusculas(Subcadena(mensaje,i, i))posicion <- 0posicion <- 0Para j <- 1 Hasta 26 HacerPara j <- 1 Hasta 26Si Subcadena(abecedario, j, j) = letra EntoncesSubcadena(abecedario, j, j) = letraposicion <- jposicion <- jSi posicion = 0 Entoncesposicion = 0cifrado <- cifrado + letracifrado <- cifrado + letranueva <- (posicion - 1 + desplazamiento) MOD 26 + 1nueva <- (posicion - 1 +desplazamiento) MOD 26 + 1cifrado <- cifrado + Subcadena(abecedario, nueva, nueva)cifrado <- cifrado +Subcadena(abecedario, nueva,nueva)Escribir "Mensaje cifrado: ", cifradoEscribir "Mensaje cifrado: ",cifradoFinAlgoritmoFinAlgoritmo

Ejemplo de ejecución

Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.

Mensaje a cifrar:Respuesta del usuario: nos vemos a las ochoDesplazamiento (1 a 25):Respuesta del usuario: 3Mensaje cifrado: qrv yhprv d odv rfkr

Desafío

Agrega la opción de descifrar un mensaje ya cifrado.

Ver pista

Descifrar es lo mismo que cifrar con un desplazamiento de 26 menos el original.

Abrir en Codoritmo
  • Palíndromos

    Revisa si una frase se lee igual al derecho y al revés.

    Intermedio
  • Contar vocales

    Cuenta las vocales, los espacios y los demás caracteres de un texto.

    Intermedio
  • Números romanos

    Convierte un número entre 1 y 3999 a números romanos.

    Avanzado