Autor
|
Tema: [pseint] Ayuda - Cifrado César (Leído 12,113 veces)
|
shadowzgz
Desconectado
Mensajes: 5
|
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.... ¿Cómo lo harías vosotros? Gracias de antemano xD
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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
Mensajes: 9.878
|
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.... ¿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
Mensajes: 5
|
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 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
Mensajes: 9.878
|
¿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: 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cifrado César en Python
Scripting
|
.:WindHack:.
|
3
|
7,704
|
7 Junio 2010, 02:10 am
por Novlucker
|
|
|
Ayuda con una modificacion del cifrado cesar en c++( Ubuntu ).
Criptografía
|
mat.marchantt
|
7
|
8,622
|
12 Julio 2011, 22:38 pm
por Died
|
|
|
Qué preferis: Cifrado cesar o Ensalada cesar?
Foro Libre
|
Castg!
|
6
|
4,939
|
1 Agosto 2011, 22:45 pm
por scr21
|
|
|
cifrado cesar en c
Programación C/C++
|
kikian94
|
6
|
10,993
|
29 Octubre 2013, 15:01 pm
por kikian94
|
|
|
Ayuda!!!!!!! MYSQL PARA WINDOWS Y LINUX, Cesar Perez Lopez
Bases de Datos
|
spaw2001mx
|
5
|
6,392
|
22 Febrero 2015, 03:51 am
por WIитX
|
|