Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Cifrado Atbash V2 [C++]

  • 4 Respuestas
  • 4028 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado NERV0

  • *
  • Underc0der
  • Mensajes: 35
  • Actividad:
    0%
  • Reputación 5
    • Ver Perfil
« en: Julio 08, 2016, 04:39:27 am »
Buenas ! Para la facultad tuve que hacer el cifrado Atbash, y la verdad es que no quiero dejarlo "juntando polvo" en el ordenador, sabiendo que a alguien le puede servir...

EL CÓDIGO DE ABAJO TIENE MODIFICACIONES CON RESPECTO AL ORIGINAL, SI QUIEREN VER EL ORIGINAL, VOY A DEJARLO EN LOS COMENTARIOS.

Así que, sin más ni menos, el código:

Código: C++
  1.  
  2. #include <iostream>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <stdio.h>
  6.  
  7. using namespace std;
  8.  
  9. string texto;
  10. string encriptado;
  11.  
  12. string alfabeto_normal =    "abcdefghijklmnopqrstuvwxyz";
  13. string alfabeto_invertido = "zyxwvutsrqponmlkjihgfedcba";
  14.  
  15. string alfabeto_mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  16. string alfabeto_invertido_mayusculas = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
  17.  
  18.  
  19. void encriptar_desencriptar (string & texto, string & alfabeto_normal, string & alfabeto_invertido, string & alfabeto_mayusculas, string & alfabeto_invertido_mayusculas, string & encriptado){
  20.        
  21. for (int posicion_texto=0; posicion_texto < texto.length(); posicion_texto++){
  22.        
  23. for (int posicion=0; posicion < alfabeto_normal.length(); posicion++){
  24.  
  25. if (texto[posicion_texto] >= 'a' && texto[posicion_texto] <= 'z'){
  26.                                         if (texto[posicion_texto] == alfabeto_normal[posicion])
  27.                                                 {encriptado += alfabeto_invertido[posicion];} }
  28.                                        
  29.  
  30.                                                                                                                                                                                                                                                    
  31. if (texto[posicion_texto] >= 'A' && texto[posicion_texto] <= 'Z'){
  32.                                         if (texto[posicion_texto] == alfabeto_mayusculas[posicion])
  33.                                                 {encriptado += alfabeto_invertido_mayusculas[posicion];} }
  34.                                                
  35.                                                                                            }
  36.                                                                                            
  37. if (texto[posicion_texto] == ' '){encriptado += ' ';}                                                                                  
  38. if (texto[posicion_texto] == ','){encriptado += ',';}                                                                                          
  39. if (texto[posicion_texto] == '.'){encriptado += '.';}}
  40.        
  41.        
  42. }
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. int main(){
  50.  
  51.        
  52.         system("title Cifrado Atbash");
  53.        
  54.         system("cls");
  55.        
  56.         int eleccion_inicio;
  57.  
  58. cout << " ____________________________________________ "<<endl;
  59. cout << "|                                            |"<<endl;
  60. cout << "|              Cifrado Atbash                |"<<endl;
  61. cout << "|____________________________________________|"<<endl;
  62. cout << "|                                            |"<<endl;
  63. cout << "|      1. Encriptar/Desencriptar Texto       |"<<endl;
  64. cout << "|                 2. Salir                   |"<<endl;
  65. cout << "|____________________________________________|"<<endl;
  66.  
  67.                                         cin >>eleccion_inicio;
  68.                                         cin.sync();
  69.  
  70.  
  71. if (eleccion_inicio == 2){return 0;}                                                           
  72.  
  73. if (eleccion_inicio == 1){
  74.        
  75.         system("cls"); 
  76.  
  77. cout << " ____________________________________________ "<<endl;
  78. cout << "|                                            |"<<endl;
  79. cout << "|              Cifrado Atbash                |"<<endl;
  80. cout << "|____________________________________________|"<<endl;
  81. cout << "|                                            |"<<endl;
  82. cout << "|  Ingrese el texto a encriptar-desencriptar |"<<endl;
  83. cout << "|                                            |"<<endl;
  84. cout << "|____________________________________________|"<<endl;
  85. cout << " "<<endl;
  86.  
  87. getline(cin, texto);
  88.  
  89.                                                                
  90. encriptar_desencriptar (texto, alfabeto_normal, alfabeto_invertido, alfabeto_mayusculas, alfabeto_invertido_mayusculas, encriptado);
  91.  
  92.  
  93.                         system("cls");
  94.                         cout << " "<<endl;
  95.                         cout << "Texto original:"<<endl;
  96.                         cout << " "<<endl;
  97.                         cout << texto << endl;
  98.                        
  99.                         cout << " "<<endl;
  100.                         cout << " --------------------------------------------- "<<endl;
  101.                         cout << " --------------------------------------------- "<<endl;
  102.                        
  103.                         cout << " "<<endl;
  104.                         cout << "Texto encriptado:"<<endl;
  105.                         cout << " "<<endl;                                                                                                                                                       
  106.                 cout << encriptado << endl;
  107.                
  108.                 cout << " "<<endl;
  109.                 cout << " "<<endl;
  110.                 cout << "  ________________________________________ "<<endl;
  111.                 cout << " |  Presione una tecla para continuar...  |"<<endl;
  112.                 cout << " |________________________________________|"<<endl;
  113.                
  114.                         getch();
  115.                
  116.                         main();
  117.        
  118.                                                 };
  119.  
  120. }
  121.  
  122.  



Espero que sirva de aporte, saludos ;)
« Última modificación: Julio 08, 2016, 11:31:48 pm por NERV0 »
“Ciertos programas informáticos son el reflejo del ego académico del pelotudo que los desarrolla”

Desconectado NERV0

  • *
  • Underc0der
  • Mensajes: 35
  • Actividad:
    0%
  • Reputación 5
    • Ver Perfil
« Respuesta #1 en: Julio 08, 2016, 11:27:36 pm »
V1 DEL CODIGO ATBASH:



Código: C++
  1. #include <iostream>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <stdio.h>
  5.  
  6. using namespace std;
  7.  
  8. int encriptar_desencriptar();
  9.  
  10. string alfabeto_normal =    "abcdefghijklmnopqrstuvwxyz";
  11. string alfabeto_invertido = "zyxwvutsrqponmlkjihgfedcba";
  12.  
  13. string alfabeto_mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  14. string alfabeto_invertido_mayusculas = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
  15.        
  16.        
  17.  
  18.  
  19.  
  20.  
  21.  
  22. /*****************************************************************
  23. *              FUNCION ENCRIPTAR / DESENCRIPTAR                  *
  24. *****************************************************************/
  25.  
  26. void encriptar_desencriptar_texto(string & texto, string & alfabeto_normal, string & alfabeto_invertido,
  27.                                                         string & alfabeto_mayusculas, string & alfabeto_invertido_mayusculas,  string & encriptado){
  28.  
  29. for (int posicion_texto=0; posicion_texto < texto.length(); posicion_texto++){
  30.  
  31. for (int posicion=0; posicion < alfabeto_normal.length(); posicion++){
  32.  
  33. if (texto[posicion_texto] >= 'a' && texto[posicion_texto] <= 'z'){
  34.                                         if (texto[posicion_texto] == alfabeto_normal[posicion])
  35.                                                 {encriptado += alfabeto_invertido[posicion];} }
  36.  
  37.  
  38.  
  39. if (texto[posicion_texto] >= 'A' && texto[posicion_texto] <= 'Z'){
  40.                                         if (texto[posicion_texto] == alfabeto_mayusculas[posicion])
  41.  
  42.                                                 {encriptado += alfabeto_invertido_mayusculas[posicion];} }
  43.                                                
  44.                                                                                       }
  45.                                                                                            
  46. if (texto[posicion_texto] == ' '){encriptado += ' ';}
  47.  
  48. if (texto[posicion_texto] == ','){encriptado += ',';}
  49.                                                                                                
  50. if (texto[posicion_texto] == '.'){encriptado += '.';}
  51.  
  52. }
  53.        
  54. };
  55.  
  56.  
  57.  
  58.  
  59.  
  60. int main(){
  61.        
  62.         system("title Cifrado Atbash");
  63.        
  64.         int eleccion_inicio;
  65.  
  66. cout << " ____________________________________________ "<<endl;
  67. cout << "|                                            |"<<endl;
  68. cout << "|              Cifrado Atbash                |"<<endl;
  69. cout << "|____________________________________________|"<<endl;
  70. cout << "|                                            |"<<endl;
  71. cout << "|      1. Encriptar/Desencriptar Texto       |"<<endl;
  72. cout << "|                 2. Salir                   |"<<endl;
  73. cout << "|____________________________________________|"<<endl;
  74.  
  75.                                         cin >>eleccion_inicio;
  76.                                         cin.sync();
  77.  
  78.  
  79.  
  80.  
  81. if (eleccion_inicio == 1 || eleccion_inicio ==2){
  82. switch(eleccion_inicio){
  83.         case 1:encriptar_desencriptar();break;
  84.         case 2:return 0;break;}
  85.                                                                                                         } else { main();}
  86. }
  87.  
  88. int encriptar_desencriptar(){
  89.        
  90. system("cls"); 
  91.  
  92. string texto;
  93. string encriptado;
  94.  
  95. cout << " ____________________________________________ "<<endl;
  96. cout << "|                                            |"<<endl;
  97. cout << "|              Cifrado Atbash                |"<<endl;
  98. cout << "|____________________________________________|"<<endl;
  99. cout << "|                                            |"<<endl;
  100. cout << "|  Ingrese el texto a encriptar-desencriptar |"<<endl;
  101. cout << "|                                            |"<<endl;
  102. cout << "|____________________________________________|"<<endl;
  103.  
  104. getline(cin, texto);
  105.  
  106.                         encriptar_desencriptar_texto(texto, alfabeto_normal, alfabeto_invertido, alfabeto_mayusculas, alfabeto_invertido_mayusculas, encriptado);
  107.                                                                                                                                                                                                                                                                                                          
  108.                                                                                                                                                                                                                                                                                                          
  109.                         cout << " " <<endl;    
  110.                        
  111.                         cout << " Texto encriptado: "<<endl;
  112.                         cout << " " <<endl;                                                                                                                                                      
  113.                 cout << encriptado << endl;
  114.                
  115.                 getch();
  116. }
  117.  
  118.  
  119.  
« Última modificación: Julio 08, 2016, 11:30:52 pm por NERV0 »
“Ciertos programas informáticos son el reflejo del ego académico del pelotudo que los desarrolla”

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5463
  • Actividad:
    16.67%
  • Reputación 35
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #2 en: Febrero 15, 2018, 03:16:53 pm »
Se ve muy bueno!
Ya lo voy a probar.
Solo lo tenes en C++ o lo tenes porteado a algún otro lenguaje? (Como PHP)

Saludos,
ANTRAX


Desconectado tha_username

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Marzo 10, 2018, 07:24:01 am »
Buen codigo amigo, lo unico mejorable es que el codigo Atbash tiene la caracteristica de "invertir" el alfabeto usado(si tenemos un alfabeto de n letras y la letra a ocupa la posicion i, su nueva posicion seria n-i+1, en el alfabeto ingles la a es z,b es y,c es x...), asi que seria mejor que permitieses al usuario elegir su propio alfabeto ;D

Desconectado NERV0

  • *
  • Underc0der
  • Mensajes: 35
  • Actividad:
    0%
  • Reputación 5
    • Ver Perfil
« Respuesta #4 en: Abril 05, 2018, 08:58:08 pm »
Se ve muy bueno!
Ya lo voy a probar.
Solo lo tenes en C++ o lo tenes porteado a algún otro lenguaje? (Como PHP)

Saludos,
ANTRAX
Gracias ANTRAX ! No hice port a otro lenguaje, pero podría hacerlo. En unos de estos días lo estaré subiendo en PHP.

Buen codigo amigo, lo unico mejorable es que el codigo Atbash tiene la caracteristica de "invertir" el alfabeto usado(si tenemos un alfabeto de n letras y la letra a ocupa la posicion i, su nueva posicion seria n-i+1, en el alfabeto ingles la a es z,b es y,c es x...), asi que seria mejor que permitieses al usuario elegir su propio alfabeto ;D
Gracias greyocelot, lo que vos estás diciendo es de crear un especie de One Time Pad. Estoy trabajando en eso, pero con un alfabeto extendido que soporte caracteres especiales. Apenas lo termine y vea que funcione correctamente, lo voy a subir.

Saludos a los dos, NERV0.
“Ciertos programas informáticos son el reflejo del ego académico del pelotudo que los desarrolla”

 

¿Te gustó el post? COMPARTILO!



Cifrado Cesar 1.3

Iniciado por rollth

Respuestas: 6
Vistas: 4536
Último mensaje Septiembre 09, 2014, 06:36:27 pm
por roadd
Cifrado atbash [Codigo]

Iniciado por rollth

Respuestas: 0
Vistas: 4121
Último mensaje Enero 08, 2015, 02:53:47 pm
por rollth