|
|
Codificador/Decodificador by P4|3L0
|
|
|
P4|3L0
Expulsado
Mensajes: 177
Registro en: Aug 2010
Gracias dados: 5
Gracias recibidos: 20
|
Mensaje: #1
Codificador/Decodificador by P4|3L0
Codificador(la función de encriptar texto no le funciona del todo, pero para esto se puede prescindir):
Lenguaje C
//###################
//## Codificador ##
//## Primario ##
//## by P4|3L0 ##
//###################
#include<stdio.h>
#include<stdlib.h>
#define HS 45
FILE *gjdifsp;
//FILE *segundo = fopen("Saved51.txt","a");
char oikk13[900];
char spagheti[256];
char spagheti2[256];
char string[999];
char atoipoc[300];
int i=0;
char iox7;
int racifidoc();
int get_lenght(char *hsx1)
{
char *lkg = hsx1;
while (*lkg != '\0')
lkg++;
return (int)(lkg-hsx1);
}
int main(void)
{
int rkr;
printf("%cQuieres codificar un fichero o una frase?\n",168);
printf("1-Fichero de Texto\n2-Frase\n3-Salir\nEscoge: ");
scanf("%i",&rkr);
if (rkr==2)
{
printf("Introduce la frase a codificar: ");
gets(spagheti);
gets(string);
int mkpm = get_lenght(string);
for (i=0; i<=mkpm; i++)
{
if (string[i]!= '\0')
{
if (string[i]!= ' ')
{
string[i] = (string[i]+rand()%HS);
}
else
{
string[i] = (string[i]);
}
}
else
{
break;
}
}
printf("%s\n", string);
return 0;
}
else if (rkr ==1)
{
char fotrvyptop[51699];
system("cls");
printf("El fichero debe estar en el mismo directorio que el ejecutable.\nEscribe el nombre del fichero: ");
scanf("%s",fotrvyptop);
printf("\n--------Fichero %s Codificado--------\n",fotrvyptop);
gjdifsp = fopen(fotrvyptop,"w+");
racifidoc();
}
else if(rkr == 3)
{
return 0;
}
else
{
system("cls");
return main();
}
}
int racifidoc()
{
while (fgets(oikk13, 999, gjdifsp) != NULL)
{
int mkpm = get_lenght(oikk13);
for (i=0; i<=mkpm; i++)
{
if (oikk13[i]!= '\0')
{
if (oikk13[i]!= '\n')
{
if (oikk13[i]!= ' ')
{
oikk13[i] = (oikk13[i]+rand()%HS);
}
else
{
oikk13[i] = (oikk13[i]);
}
}
else
{
oikk13[i] = (oikk13[i]);
}
}
else
{
break;
}
}
}
fprintf(gjdifsp,"%s\n", oikk13);
printf(" %s",oikk13);
printf("\n--------Final Fichero-------------\n");
printf("%cDesea guardar el texto?s/n ",168);
gets(spagheti);
scanf("%c",&iox7);
if (iox7=='s'||'S')
{
// fclose(segundo);
fclose(gjdifsp);
}
else if (iox7=='n'||'N')
{
system("cls");
return 1;
}
else
{
return 0;
}
}
Si, esta bastante "ofuscadete", realmente me gustaría que me explicara alguien el algoritmo usado.
Lo digo porque quizas se lleva un susto al ver esto:
Entrada: Cibernodo.Net
Salida: lzäì×ürvvKqyä
Y si, el decodificador lo decodifica.
Lenguaje C
//###################
//## Decodificador ##
//## Primario ##
//## by P4|3L0 ##
//###################
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define HS 45
char string[999];char spagheti[5169];
int i=0;FILE *gjdifsp;char oikk13[300];
int get_lenght(char *hsx1)
{
char *lkg = hsx1;
while(*lkg != '\0')
lkg++;
return (int)(lkg-hsx1);
}
int racifidoced(void)
{
while (fgets(oikk13, 800, gjdifsp) != NULL)
{
int mkpm = get_lenght(oikk13);
for(i=0; i<=mkpm; i++)
{
if(oikk13[i]!= '\0'){
if(oikk13[i]!= '\n'){
if(oikk13[i]!= ' '){
oikk13[i] = (oikk13[i]-rand()%HS);
}
else{
oikk13[i] = (oikk13[i]);
}
}
else{
oikk13[i] = (oikk13[i]);
}
}
else{
break;}
}
printf("%s", oikk13);
}
printf("\n--------Final Fichero-------------\n");
}
int main(void)
{
int rkr;
printf("%cQuieres decodificar un fichero o una frase?\n1-Fichero de texto\n2-Frase\nEscoge: ",168);
scanf("%i",&rkr);
if(rkr==2){
printf("Introduce la frase a decodificar: ");
gets(spagheti);
gets(string);
int mkpm = get_lenght(string);
for(i=0; i<=mkpm; i++)
{
if(string[i]!= '\0'){
if(string[i]!= ' '){
string[i] = (string[i]-rand()%HS);
}
else{
string[i] = (string[i]);
}}
else{
break;}
}
printf("%s\n", string);
return 0;
}
else if(rkr==1){
char fotrvyptop[5169];
system("cls");printf("El fichero debe estar en el mismo directorio que el ejecutable.\nEscribe el nombre del fichero: ");
scanf("%s",&fotrvyptop);
printf("\n--------Fichero %s DE-Codificado--------\n",fotrvyptop);
gjdifsp = fopen(fotrvyptop,"r");
racifidoced();
}
else{system("cls");return main();}
}
Saludos y espero que alguien consiga lo del algoritmo, tampoco es dificil,ehh.
BUEN RETO.
|
|
| 08-09-2010 03:25 AM |
|
|
|
Mensaje: #2
RE: Codificador/Decodificador by P4|3L0
Wao pablo, me impresionas! creo que el algoritmo es simple solo que lo tienes oculto! xd quieres confundir a muchos, aunque yo sea muy novato en esto lo entendi, simplemente me fui al grano sin mirar ese poco de variables y cosas aparentemente complejas!
he aqui toda su complejidad!
string[i] = (string[i]+rand()%HS);
Donde HS es 45
a el caracter actual le sumas un numero random entre 0 y 45 y listo!
para decodificarlo es exactamente lo mismo
string[i] = (string[i]-rand()%HS);
Donde HS es 45
en este caso Restas el numero random de 45, pero porque si es un numero random se decodifica correctamente??
simplemente porque no veo en su programa un "SRAND" ni nada por el estilo es decir que no es un random entre 0 y 45 es una sencuencia pseudo-aleatoria es decir que el codificador y el decodificador toman la misma semilla y seria la misma secuencia de numeros entre 0 y 45, eso me quedo muy claro la ves que me correjiste!
Estoy en lo cierto??
Saludos pablo!! =)
Cualquier código de tu autoría que no hayas revisado en meses, bien podría haberlo escrito cualquier otra persona, porque al volverlo a revisar no te enterarás de nada.
|
|
| 08-09-2010 12:00 PM |
|
P4|3L0
Expulsado
Mensajes: 177
Registro en: Aug 2010
Gracias dados: 5
Gracias recibidos: 20
|
Mensaje: #3
RE: Codificador/Decodificador by P4|3L0
Gracias Jh0uBrt, bueno tu has visto lo qeu habrá visto mucha gente que haya visto el code.
Lo de la línea esa es importante, pero tu ahora piensa...es un número aleatorio entre 0 y 45 pensemos:
Entrada: pablo es dios
Salida: Öräöø xv vpîû
El decodificador tiene que coger esa cadena y volver a sacar "pablo es dios"
Si fuera realmente algo aleatorio, la decodificacion seria un poco impensable..pero realmente(como tu te has dado cuenta) al no haber srand ni ninguna semilla, es lo mismo que si fuera un array de numeros, y al restar pasa lo mismo, ese era mi pequeño truco que pense en utilizar cuando os expliqué lo de pseudo-aleatorio.
Pero bueno vamos a comprobarlo y luego te explico lo que quieras.
Código:
#include<stdio.h>
#include<stdlib.h>
int main(){
int arreglo[4],a;
for(a=0;a<4;a++){
arreglo[a]=rand()%20;
/*
Numero 1: 1
Numero 2: 7
Numero 3: 14
Numero 4: 0
*/
printf("Numero %i: %i\n",(a+1),arreglo[a]);
}
return 0;
}
Te retornara siempre unos numeros los mismos entonces con eso tu puedes hacer la codificacion y luego con el decodificador lo restas y al ser los mismos se pone bien.
PD:Al releer tu post veo que esto lo has comprendido todo bien, y que lo entendiste todo genial, cosa que me alegra :)
|
|
| 08-09-2010 03:51 PM |
|
|
|
Mensaje: #4
RE: Codificador/Decodificador by P4|3L0
Nunca dije que fuera un numero aleatorio, solo dije que era un random, xD
diciendo random quiero decir una secuencia de numeros seleccionada por el ordenador... un numero pseudo-aleatorio!
que por cierto, mareas con tu code, y yo estoy en lo correcto! esta ves nada de correcciones o si ?? :P! :D
si me da tiempo cuando llegue de la Universidad escribo un code mas simple que ese y que haga lo mismo! :D saludos pablo (en c++)!!
Cualquier código de tu autoría que no hayas revisado en meses, bien podría haberlo escrito cualquier otra persona, porque al volverlo a revisar no te enterarás de nada.
(Este mensaje fue modificado por última vez en: 09-09-2010 12:17 AM por Jh0uBrt.)
|
|
| 09-09-2010 12:16 AM |
|
P4|3L0
Expulsado
Mensajes: 177
Registro en: Aug 2010
Gracias dados: 5
Gracias recibidos: 20
|
Mensaje: #5
RE: Codificador/Decodificador by P4|3L0
Más simple puede ser, pero es que yo le meti mucha tralla porque iba con cuidado con los bugs y cosas asi, sino mira esto:
char *lkg = hsx1;
while(*lkg != '\0')
lkg++;
return (int)(lkg-hsx1);
y mira:
if(oikk13[i]!= '\0'){
if(oikk13[i]!= '\n'){
if(oikk13[i]!= ' '){
oikk13[i] = (oikk13[i]-rand()%HS);
}
por si es el final o es un salto de linea o si es un espacio...
Mareo con el code a que te refieres? ¿Qué esta medio ofuscado?
|
|
| 09-09-2010 01:26 AM |
|
|
|
Mensaje: #6
RE: Codificador/Decodificador by P4|3L0
windows.h -> shit.
|
|
| 16-03-2011 10:20 AM |
|
Usuario(s) navegando en este tema: 1 invitado(s)
|