Hola,
Quiero ponerle a una carpeta una clave, pero que se puedan utilizar los archivos que hay dentro con C++ si se conoce la clave. Además, quiero que al grabarla en un disco siga teniendo esa clave
¿Se puede? ¿Como?
Gracias y Salu2
| |||
Clave Hola, Quiero ponerle a una carpeta una clave, pero que se puedan utilizar los archivos que hay dentro con C++ si se conoce la clave. Además, quiero que al grabarla en un disco siga teniendo esa clave ¿Se puede? ¿Como? Gracias y Salu2 |
| ||||
Respuesta: Clave necesitas algun programa que pueda hacerlo, casi con todos puedes un ejemplo: IZarc o tabien winrar el unico problema que le veo es que si fueras a una computadora que no tubiera algun programa que lo pueda hacer tubieras que extraer todo el .zip. aunque pudieras solucionar eso con la vercion portable del IZarc |
| |||
Respuesta: Clave No, no me refiero a descomprimirlo. Lo que yo quiero, es utilizar con C++ unos archivos (.txt) donde hay unas contraseñas, pero quiero que el usuario que lo utilice, no pueda ver esos archivos, y lo más fácil es ponerle contraseña a la carpeta donde esté. ¿Se puede hacer eso con una carpeta? ¿Y sino, como se puede acceder a los archivos de un .zip con C++? |
| ||||
Respuesta: Clave a disculpa entendi mal no es mejor que encriptes esos .txt? mira encotnre este codigo en http://c.conclase.net/ dice que sirbe para encriptar cadenas de textos introducidas desde el teclado talbes lo puedas midificar para ese fin /* Encriptado de textos. (C) Noviembre de 2.000 Jorge Eduardo Cordero Rodriguez */ #include <stdio.h> #include <conio.h> #include <iostream.h> #include <string.h> #include <ctype.h> int main(void) { FILE *arch; char encriptado[100],desencriptado[100], r, pas[11]; int longitud,i; arch=fopen("Datos.txt","w"); clrscr(); cout<<"Escribe el texto que deseas encriptar : "; cin.getline(encriptado,100); longitud = strlen(encriptado); for ( i = 0;i<longitud;i++) { encriptado[i] = char(toascii(encriptado[i])+122); } fprintf(arch,"%s",encriptado); cout<<"\n\nEl texto encriptado es "<<encriptado; cout<<"\n\nDeseas desencriptar el texto s/n "; cin>>r; if (toupper(r)=='S') { cout<<"\n\nDame la clave de acceso para desencriptar : "; cin>>pas; if (strcmp(pas,"C-con-Clase")==0) { cout<<"\n\nEl texto desencriptado es "; for(i=0;i<longitud;i++) { desencriptado[i]=char(encriptado[i])-122; cout<<desencriptado[i]; } } else { cout<<"\n\n\n Lo sentimos mucho, no esta autorizado para ver el archivo...."; getch(); } } else cout<<"\n\nGracias por utiliza nuestro programa..."; getchar(); fclose(arch); return(0); } |
| |||
Respuesta: Clave Otro método de encriptado es el simple XOR, aquí dejo un pequeño ejemplo:
Código:
Hay que tener en cuenta que al encriptar con este método algunos caracteres pueden pasar a ser cero, por lo que al escribirlos en el archivo hay que hacerlo en forma binaria no en texto. ( fopen("Datos.txt","wb"); ). char data[128]; char clave[128]; int pos_clave=0; // Posición en la clave int longitud_data; int longitud_clave; printf("Introduzca los datos a encriptar:\n"); gets(data); printf("Introduzca la clave:\n"); gets(clave); longitud_data=strlen(data); longitud_clave=strlen(clave); for(int N=0; N<longitud_data; N++) { data[N]^=clave[pos_clave]; pos_clave++; if(pos_clave==longitud_clave) pos_clave=0; } printf("Datos encriptados: \"%s\"\n", data); printf("Introduzca la clave:\n"); gets(clave); longitud_clave=strlen(clave); pos_clave=0; for(int N=0; N<longitud_data; N++) { data[N]^=clave[pos_clave]; pos_clave++; if(pos_clave==longitud_clave) pos_clave=0; } printf("Datos desencriptados: \"%s\"\n", data); |
| |||
Respuesta: Clave Gracias, eso me servirá. Pero tengo otro problema: Ahora, además del texto, voy a necesitar un archivo .3ds, y tampoco quiero que pueda modificarlo. ¿Como puedo hacer para que no pueda usarlo ni verlo? |
| |||
Respuesta: Clave Puedes usar el método de XOR pero aplicado a archivos binarios, desencriptando el archivo a un archivo temporal, claro que en ese punto se puede ver el archivo, o bien desencriptarlo en la memoria y después usarlo desde ahí, todo depende del código de tu programa. Te dejo una función para encriptar/desencriptar archivos binarios, o lo que sea, usando XOR:
Código:
@Faycavoid encriptar(char *origen, char *destino, char *clave) { FILE *archivo_origen; FILE *archivo_destino; char data[128]; int pos_clave=0; // Posición en la clave int longitud_clave; int longitud_data; longitud_clave=strlen(clave); archivo_origen=fopen(origen, "rb"); archivo_destino=fopen(destino, "wb"); do { longitud_data=fread(&data, sizeof(char), sizeof(data), archivo_origen); for(int N=0; N<longitud_data; N++) { data[N]^=clave[pos_clave]; pos_clave++; if(pos_clave==longitud_clave) pos_clave=0; } fwrite(&data, sizeof(char), longitud_data, archivo_destino); } while(longitud_data==sizeof(data)); fflush(archivo_origen); fclose(archivo_origen); fflush(archivo_destino); fclose(archivo_destino); } int main() { // Para encriptar solo se llama a la función encriptar("archivo.3ds", "encriptado.dat", "1234"); // Para desencriptar se llama a la misma función pero que lea el archivo encriptado encriptar("encriptado.dat", "desencriptado.3ds", "1234"); return 0; } Cita: Es un formato creado para 3D Studio Max, se usa para guardar objetos tridimensionales.que es un archivo .3ds? En Wikipedia: http://es.wikipedia.org/wiki/3D_Studio_Max Ejemplo: http://www.the3dstudio.com/product_details.aspx?id_product=37948 |