Autor
|
Tema: Cifrador root 13 (Leído 4,894 veces)
|
Søra
Desconectado
Mensajes: 260
"Piensa por ti mismo"Antifascismo Antiracismo
|
Ola a todos he intentado hacer un codigo que cifre un archivo en root 13 y el gcc me da error solo 1 no e logrado solucionar. #include <stdio.h> #define root 13 main() { printf("¿Número de carácteres?\n"); int num; char vector[num]; int c; FILE *comprob; comprob = fopen("archivo.txt","rb");if (comprob==NULL) { printf("No existe el archivo\n"); } else { int i; for (i=0; i<num; i++) { vector[i]=c;} vector[i] = '\0'; int a,b; char z,buffer2[58],buffer3[10000]; buffer2 = *"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+"; for (a=0; a<num; a++) { for (b=0; b<58; b++) { if (vector[a]==buffer2[b]) { z = a + root; buffer3[a] = buffer2[z]; }}}} return 0;}
el error del gcc es: codesC# gcc cifrador.c cifrador.c: In function ‘main’: cifrador.c:24: error: incompatible types when assigning to type ‘char[58]’ from type ‘char’
|
|
|
En línea
|
|
|
|
pucheto
Desconectado
Mensajes: 215
|
El * que pusiste en frente de buffer2 = *"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
es el problema. De todas formas tu error es quererle asignar a un array otro puntero... lo q tenes q hacer es un memcpy..
|
|
|
En línea
|
|
|
|
Søra
Desconectado
Mensajes: 260
"Piensa por ti mismo"Antifascismo Antiracismo
|
Acabo de leer como va el funcionamiento del memcpy sirve para copiar los primeros terminos de un objeto a otro pero no se como aplicarlo ya que yo no copio los n primeros terminos solo 1 no?? donde deberia ponerlo..
|
|
|
En línea
|
|
|
|
Shell Root
|
La verdad no se lo que intentas hacer con el archivo. XD char buffer2[58] = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Søra
Desconectado
Mensajes: 260
"Piensa por ti mismo"Antifascismo Antiracismo
|
Da= si lo cambio me da este error: cifrador.c:24: error: incompatible types when assigning to type ‘char[58]’ from type ‘char *’
|
|
|
En línea
|
|
|
|
pucheto
Desconectado
Mensajes: 215
|
Pensa a los arrays como punteros... vos queres hacer algo asi: char buf[58]; //reservo un array del tamaño q quiero. memcpy(buf ,"abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+",58); //aclaro una cosa, el string ese q vos pones tiene tamaño 59, ya que como es un string, tiene un '/0' al final, pero copio solo lo q me interesa q es hasta el 58.
No probé compilar pero debería andar. Un poco sobre memcpy... hay un ejemplo bastante claro al final... http://www.cplusplus.com/reference/clibrary/cstring/memcpy/for (i=0; i<num; i++) { vector[i]=c; } vector[i] = '\0'; //Aca el seg fault
Estoy casi seguro q da segmentation fault. Pq al salir del ciclo i es igual a num, entonces te pasas en 1 el tamaño del arreglo, pero creo, no me puse a analizar bien.
|
|
« Última modificación: 15 Diciembre 2010, 19:37 pm por pucheto »
|
En línea
|
|
|
|
Arkangel_0x7C5
Desconectado
Mensajes: 361
|
si no vas a modificar la cadena puedes hacer esto: char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
y si lo piensas modificar haz esto antes del main: char buffer2[] = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+";
|
|
|
En línea
|
|
|
|
Søra
Desconectado
Mensajes: 260
"Piensa por ti mismo"Antifascismo Antiracismo
|
Vale jeje creo que a sido una giñada de codigo el objetivo era cifrar un archivo de texto con root 13 pero algo deve fallar, he quitado la "b" a la hora de abrir archivos para que no los abra en modo binario pero aun asi cuando cifra el archivo da un tipo de archivo no reconocido y al descifrarlo pasa =, dejo el codigo. CIFRADOR#include <stdio.h> #define root 13 main() { char z,buffer3[10000]; printf("¿Número de carácteres?\n"); int num; char vector[num]; int c; FILE *comprob; comprob = fopen("archivo.txt","r");if (comprob==NULL) { printf("No existe el archivo\n"); } else { int i; for (i=0; i<num; i++) { vector[i]=c;} vector[i] = '\0'; int a,b; char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+"; for (a=0; a<num; a++) { for (b=0; b<58; b++) { if (vector[a]==buffer2[b]) { z = a + root; buffer3[a] = buffer2[z]; }}}} FILE *comprobfin; comprobfin = fopen ("cifrado.txt","w+"); int d; for (d=0; d<num; d++) { fputc (buffer3 [d ],comprobfin ); } return 0;}
DESCIFRADOR#include <stdio.h> #define root 13 main() { char z,buffer3[10000]; printf("¿Número de carácteres?\n"); int num; char vector[num]; int c; FILE *comprob; comprob = fopen("cifrado.txt","r");if (comprob==NULL) { printf("No existe el archivo\n"); } else { int i; for (i=0; i<num; i++) { vector[i]=c;} vector[i] = '\0'; int a,b; char* buffer2 = "abcdefghijklmnñopqrstuvwxyz1234567890¿?()/&%$·!¡-.,;: ><*+"; for (a=0; a<num; a++) { for (b=0; b<58; b++) { if (vector[a]==buffer2[b]) { z = a - root; buffer3[a] = buffer2[z]; }}}} FILE *comprobfin; comprobfin = fopen ("archivo.txt","w+"); int d; for (d=0; d<num; d++) { fputc (buffer3 [d ],comprobfin ); } return 0;}
a ver si me ayudan
|
|
« Última modificación: 15 Diciembre 2010, 22:28 pm por Søra »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Necisito Un encriptador o cifrador
Software
|
Leon2010
|
2
|
2,465
|
18 Mayo 2010, 11:00 am
por musicman
|
|
|
[PROYECTO]Desarrollo de un cifrador indetectable
« 1 2 3 »
Análisis y Diseño de Malware
|
ErOzE
|
22
|
13,363
|
5 Marzo 2011, 22:52 pm
por ErOzE
|
|
|
Crypter - Cifrador de Archivos - Universal
Programación General
|
traviatØ
|
5
|
5,487
|
28 Julio 2011, 01:41 am
por [Case]
|
|
|
Mi programa cifrador de datos. (criptografia).
Programación C/C++
|
elkiy
|
5
|
7,521
|
30 Mayo 2013, 03:37 am
por dato000
|
|
|
El cifrador de Polybios
Java
|
Tronos154
|
2
|
5,831
|
26 Enero 2016, 21:30 pm
por Tronos154
|
|