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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa codificador de texto a base64 estandar. [C/C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa codificador de texto a base64 estandar. [C/C++]  (Leído 4,826 veces)
glas

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Programa codificador de texto a base64 estandar. [C/C++]
« en: 3 Octubre 2010, 02:11 am »

Hola amigos, estudiando un tema de protocolos de internet me encontre con la codificación en base64, la verdad no la conocia, por tanto me puse a estudiar su funcionamiento y que mejor forma de aprenderla que haciendo un programa en C, el cual codifica un texto ingresado en la consola en donde devuelve su resultado en base64 en la misma consola, el programa lo hice bajo Linux Ubuntu, bueno aqui lo dejo espero les ayude en algo, dejen su comentario y/o consejo, trate de utilizar lo menos posibe de funciones ya existentes, bueno saludos. ::)

NOTA: (algunas funciones como; printf() y puts() eran para analisis y depuracion del programa las deje como comentarios), dejen comentario de como reducir el codigo por favor.

Código
  1. //Autor: Jonathan Carrasco (GLAS)
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. main()
  5. {
  6. //int tarea;
  7. void Codificar();
  8. //void Decodificar();
  9. system("clear");
  10. printf("**************************\n");
  11. printf("******** Code 64 *********\n");
  12. printf("**************************\n");
  13. //printf(" Seleccione una tarea....\n\n");
  14. //printf(" 1)Codificar base 64.\n 2)Decodificar base 64.\n");
  15. //scanf("%d",&tarea); getchar();
  16. //if(tarea==1) { Codificar(); }
  17. //if(tarea==2) { Decodificar(); }
  18. Codificar();
  19. getchar();
  20. system("clear");
  21. return 0;
  22. }
  23. //-------------------------------------------------------
  24. void Codificar()
  25. {
  26. int i,n,c=1,r=0,p=7,s=0;
  27. char texto[10000],bin[80],cambio[6],store[15000],envio[6],a;
  28. void b_decimal(char valor_b[6]);
  29. printf("Ingrese texto a Codificar: ");
  30. gets(texto); printf("\n\n");
  31. for(i=0;texto[i]!='\0';i++)
  32. {
  33. n=texto[i];
  34. //printf(" %d ",n);
  35. while(n>=1)
  36. {
  37.   r=n%2;
  38.   n=n/2;
  39.   if(r==1) { bin[p]='1'; p--; }//store[s]='1'; s++; }
  40.   if(r==0) { bin[p]='0'; p--; }//store[s]='0'; s++; }
  41. }
  42. bin[p]='0'; p--; bin[8]='\0'; p=0;
  43. while(bin[p]!='\0')
  44. {
  45. store[s]=bin[p]; s++; p++;
  46. }
  47. //puts(bin);
  48. p=7;
  49. }
  50. store[s]='\0'; //puts(store); printf(" %d bits\n",s);
  51. s=0;
  52. while(store[s]!='\0')
  53. {
  54. for(p=0;p<=5;s++,p++) { envio[p]=store[s]; }
  55. envio[6]='\0'; //puts(envio);
  56. b_decimal(envio);
  57. }
  58. }
  59. //-------------------------------------------------------
  60. void b_decimal(char valor_b[6]) //funcion conversion binario-decimal
  61. {
  62. int c,n,v=0,r=0,m=0; //forma de conversion: 11001 -> 1*(2e4) + 1*(2e3) + 0*(2e2) + 0*(2e1) + 1*(2e0) = 16 + 8 + 0 + 0 + 1 = 25
  63. while(valor_b[m]!='\0') { m++; }
  64. if(m==2) { valor_b[2]='0'; valor_b[3]='0'; valor_b[4]='0'; valor_b[5]='0'; valor_b[6]='\0'; }
  65. if(m==4) { valor_b[4]='0'; valor_b[5]='0'; valor_b[6]='\0'; }
  66. //puts(valor_b);
  67. for(c=5;c>=0;)
  68. {
  69.  n=(valor_b[c]-'0');
  70.  v=v*2;
  71.  if(v==0) v=1;
  72.  n=n*v; c--;
  73.  r=r+n;
  74. }
  75. //printf("%d  ",r);
  76.  
  77. if(r==0) { printf("A"); }
  78. if(r==1) { printf("B"); }
  79. if(r==2) { printf("C"); }
  80. if(r==3) { printf("D"); }
  81. if(r==4) { printf("E"); }
  82. if(r==5) { printf("F"); }
  83. if(r==6) { printf("G"); }
  84. if(r==7) { printf("H"); }
  85. if(r==8) { printf("I"); }
  86. if(r==9) { printf("J"); }
  87. if(r==10) { printf("K"); }
  88. if(r==11) { printf("L"); }
  89. if(r==12) { printf("M"); }
  90. if(r==13) { printf("N"); }
  91. if(r==14) { printf("O"); }
  92. if(r==15) { printf("P"); }
  93. if(r==16) { printf("Q"); }
  94. if(r==17) { printf("R"); }
  95. if(r==18) { printf("S"); }
  96. if(r==19) { printf("T"); }
  97. if(r==20) { printf("U"); }
  98. if(r==21) { printf("V"); }
  99. if(r==22) { printf("W"); }
  100. if(r==23) { printf("X"); }
  101. if(r==24) { printf("Y"); }
  102. if(r==25) { printf("Z"); }
  103.  
  104. if(r==26) { printf("a"); }
  105. if(r==27) { printf("b"); }
  106. if(r==28) { printf("c"); }
  107. if(r==29) { printf("d"); }
  108. if(r==30) { printf("e"); }
  109. if(r==31) { printf("f"); }
  110. if(r==32) { printf("g"); }
  111. if(r==33) { printf("h"); }
  112. if(r==34) { printf("i"); }
  113. if(r==35) { printf("j"); }
  114. if(r==36) { printf("k"); }
  115. if(r==37) { printf("l"); }
  116. if(r==38) { printf("m"); }
  117. if(r==39) { printf("n"); }
  118. if(r==40) { printf("o"); }
  119. if(r==41) { printf("p"); }
  120. if(r==42) { printf("q"); }
  121. if(r==43) { printf("r"); }
  122. if(r==44) { printf("s"); }
  123. if(r==45) { printf("t"); }
  124. if(r==46) { printf("u"); }
  125. if(r==47) { printf("v"); }
  126. if(r==48) { printf("w"); }
  127. if(r==49) { printf("x"); }
  128. if(r==50) { printf("y"); }
  129. if(r==51) { printf("z"); }
  130.  
  131. if(r==52) { printf("0"); }
  132. if(r==53) { printf("1"); }
  133. if(r==54) { printf("2"); }
  134. if(r==55) { printf("3"); }
  135. if(r==56) { printf("4"); }
  136. if(r==57) { printf("5"); }
  137. if(r==58) { printf("6"); }
  138. if(r==59) { printf("7"); }
  139. if(r==60) { printf("8"); }
  140. if(r==61) { printf("9"); }
  141.  
  142. if(r==62) { printf("+"); }
  143. if(r==63) { printf("/"); }
  144. if(m==2) { printf("=="); }
  145. if(m==4) { printf("="); }
  146. //printf("\n");
  147. }
  148. //funcionamiento todo OK.
  149.  


« Última modificación: 4 Octubre 2010, 05:01 am por glas » En línea

Ser bueno hoy en día es ser tomado por bobo, ser justo... por imbécil, tener moral y honor... es ser retrógrada... y tener compasión es tan solo de débiles. Pero entonces que le voy a hacer si resulta que soy: Bobo, Imbécil, Retrograda y Débil... es que casi lo prefiero, lo contrario sería haber caído en un individualismo estúpido que no lleva a más que la soledad.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codificador de base64 en python
Scripting
SBlast 0 4,823 Último mensaje 24 Noviembre 2007, 23:04 pm
por SBlast
[SOURCE] Codificador de cadenas :P (act)
Programación Visual Basic
79137913 0 1,349 Último mensaje 7 Febrero 2011, 19:04 pm
por 79137913
Guardar entrada estandar en un archivo de texto
Programación C/C++
gonzaloi 8 3,703 Último mensaje 3 Abril 2011, 00:23 am
por leogtz
Codificador
Scripting
jalbtercero 1 1,324 Último mensaje 26 Mayo 2016, 04:50 am
por AlbertoBSD
Ayuda sobre un programa de codificador y decodificador
Programación C/C++
dul_stranger 1 1,056 Último mensaje 31 Marzo 2022, 23:19 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines