elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [pseint] Ayuda - Cifrado César
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [pseint] Ayuda - Cifrado César  (Leído 11,535 veces)
shadowzgz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
[pseint] Ayuda - Cifrado César
« en: 23 Diciembre 2014, 19:43 pm »

Hola buenas,
necesito acabar un trabajo con pseint y me están surgiendo algunos problemillas.
El último ejercicio que me queda es el de hacer un Cifrado César . Es dejo el enunciado: "Rellenar una cadena texto, con un mínimo de 10 palabras, y mostrar el texto cifrado con el método Cesar o cifrado por desplazamiento."
No me malinterpretéis, no busco que alguien me lo haga, pero llevo unos días y no se como hacerlo.
Alguna ayuda? Mi problema básicamente es como convertir una A en una D, una B en una E, y así sucesivamente. ¿Necesito crear una tabla con cada una de las letras del abecedario? Tengo un lio....  :huh: ¿Cómo lo harías vosotros?

Gracias de antemano xD


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [pseint] Ayuda - Cifrado César
« Respuesta #1 en: 23 Diciembre 2014, 22:08 pm »

Generalmente, para el cifrado César, se le suma la clave a cada letra de la cadena. Es decir, 'a' + 3 = 'd'. (En caso de que el número supere la 'z', se le restaría el número de letras)
No sé (aunque supongo que sí), si en pseint se puede convertir un caracter a número, que es la idea.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: [pseint] Ayuda - Cifrado César
« Respuesta #2 en: 23 Diciembre 2014, 22:27 pm »

Mi problema básicamente es como convertir una A en una D, una B en una E, y así sucesivamente. ¿Necesito crear una tabla con cada una de las letras del abecedario? Tengo un lio....  :huh: ¿Cómo lo harías vosotros?

El cifrado Caesar se basa en establecer un valor de desplazamiento (Shift), y desplazar cada letra del String a cifrar utilizando ese valor de desplazamiento.

¿Como se pasa una A a una D?, pues estableciendo un desplazamiento de +3: A -> B -> C --> D

Para revertir los cambios y dejar el string cifrado en su estado original, simplemente se utiliza el valor de desplazamiento a la inversa (negativo/positivo). en este caso -3: D -> C -> B -> A

EDITO:
Debes fijar un set de caracteres a utilizar, de la A a la Z (plus 0-9, o lo que quieras), y si el valor de desplazamiento es superior a la cantidad de caracteres, vuelves a empezar para contar desde la primera letra.

Saludos
« Última modificación: 23 Diciembre 2014, 22:31 pm por Eleкtro » En línea

shadowzgz

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: [pseint] Ayuda - Cifrado César
« Respuesta #3 en: 24 Diciembre 2014, 00:31 am »

Buenas,
Primero de todo, gracias por contestar xD
Me ha surgido una nueva duda. ¿Cómo hago para que que el programa me detecte cada una de las letras que el usuario escribe para poder cifrarlas? Me suena al ejercicio el cual hay que dar la vuelta a un número, y hay que hacerlo mediante los restos porque pseint no detecta cada uno de los números que componen, por ejemplo, 9635463. Pero claro, esto es con números, no con letras :huh:

Código:
Proceso cifrado_cesar
//Rellenar una cadena texto, con un mínimo de 10 palabras, y mostrar el texto cifrado con el método Cesar o cifrado por desplazamiento.5
definir frase, tabla como caracter;


Dimension tabla[26];
//cremos un vector e introducimos el abcdario. Omito la "ñ", ya que da errores.
tabla[0]="a";
tabla[1]="b";
tabla[2]="c";
tabla[3]="d";
tabla[4]="e";
tabla[5]="f";
tabla[6]="g";
tabla[7]="h";
tabla[8]="i";
tabla[9]="j";
tabla[10]="k";
tabla[11]="l";
tabla[12]="m";
tabla[13]="n";
tabla[14]="o";
tabla[15]="p";
tabla[16]="q";
tabla[17]="r";
tabla[18]="s";
tabla[19]="t";
tabla[20]="u";
tabla[21]="v";
tabla[22]="w";
tabla[23]="x";
tabla[24]="y";
tabla[25]="z";

//Preguntamos al usuario para que escriba una frase.
Escribir "Escribe una frase con un mínimo de 10 palabras";
Leer frase;
//pasamos la frase a minúsculas para no tener que preguntar 2 veces por cada vocal
frase=Minusculas(frase);
escribir frase;

FinProceso
« Última modificación: 24 Diciembre 2014, 00:53 am por shadowzgz » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: [pseint] Ayuda - Cifrado César
« Respuesta #4 en: 24 Diciembre 2014, 01:32 am »

¿Cómo hago para que que el programa me detecte cada una de las letras que el usuario escribe para poder cifrarlas?

Pseudo-código:

Código:
Sub Main()

DecryptedStr = "Hello world"
EncryptedStr = EncryptString(DecryptedStr, 3)
Print EncryptedStr
Terminate

End Sub

Function EncryptString(Str As String, Shift As Integer) Returns String

CharSet[]    = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789".Split()
EncryptedStr = ""

For Each C as Character in Str Do

If CharSet.Contains(C) Then

CharIndex = CharSet.FindIndex(C)

If Not (CharIndex + Shift) > (CharSet.Length) Then
char = CharSet(CharIndex + Shift)
Else
char = CharSet((CharIndex + Shift) - (CharSet.Length - Shift))
End If
     
EncryptedStr = EncryptedStr.Concatenate(char)

Else
 ThrowError("Unknown character to encrypt.")

End If // CharSet.Contains()

End For // Each C as Character in Str

Return EncryptedStr

End Function
« Última modificación: 24 Diciembre 2014, 03:26 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cifrado César en Python
Scripting
.:WindHack:. 3 7,462 Último mensaje 7 Junio 2010, 02:10 am
por Novlucker
Ayuda con una modificacion del cifrado cesar en c++( Ubuntu ).
Criptografía
mat.marchantt 7 8,281 Último mensaje 12 Julio 2011, 22:38 pm
por Died
Qué preferis: Cifrado cesar o Ensalada cesar?
Foro Libre
Castg! 6 4,550 Último mensaje 1 Agosto 2011, 22:45 pm
por scr21
cifrado cesar en c
Programación C/C++
kikian94 6 10,557 Último mensaje 29 Octubre 2013, 15:01 pm
por kikian94
Ayuda!!!!!!! MYSQL PARA WINDOWS Y LINUX, Cesar Perez Lopez
Bases de Datos
spaw2001mx 5 6,118 Último mensaje 22 Febrero 2015, 03:51 am
por WIитX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines