![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Bueno, no es dificil de usar.
1º Define un buffer, puede ser con un contenide texto o binario. 2º Define una clave. 3º Encríptalo. Código:
char Buffer[] = "Este texto se va a encriptar." DWORD Clave = 0x76349714; Crypt(Buffer, l, (char*)&Clave, 0); // Encripta el Buffer Siendo HFile el manejador de un fichero abierto y int WritePos lo ya escrito en el fichero Código:
HFile = open(FileName.c_str(), O_CREAT | O_WRONLY | O_BINARY);
.
.
.
if(HFile)
if(WritePos < Text.Length()){
int Mod = WritePos%8;
int l = Text.Length()-WritePos;
BYTE *buffer = new BYTE[l+1];
buffer[l] = 0;
strcpy((char*)buffer, Text.c_str()+WritePos); // Hacemos una copia
Crypt(buffer, l, (char*)&Clave, Mod); // Encripta el buffer
write(HFile, buffer, l);
WritePos += l;
delete buffer;
}
El buffer pasado como puntero se encriptam, por lo que si lo que se quiere en encriptar una copia y retener el original, deberá hacerse la misma antes de llamar a la función, y pasarle el puntero adecuado. Experimenta. Saludos. |
|
#2
|
||||
|
||||
|
Ahora te explico un poco el algoritmo que he usado:
La encriptación Xor es fácil de implementar y es simétrica. La misma función y la misma clave sirven para encriptar y desencriptar. Se basa en hacer una operación binaria XOR entre un dato y una clave. Piensa en este ejemplo binario: Dato = 10001000 Clave = 01000100 10001000 XOR 01000100 = 11001100; Dato Encriptado 11001100 XOR 01000100 = 10001000; Dato Desencriptado si ampliamos el nº de bits tendremos una operación XOR mas amplia... Esta rutina lo amplia a 8*8 = 64 bits. Código:
void
Crypt(void *Source, int Size, char* Clave, int Mod)
{
BYTE *source = (BYTE*)Source; // Convierto el puntero Source a BYTE*
BYTE clave[8]; // Reservo para Clave 8 BYTES
int lClave = strlen(Clave); // Encuentro el tamaño de la clave si es una cadena
for(int n=0; n<8; n++) // Fuerzo a que la clave sea de 8 bytes máximo
clave[n] = Clave[n%lClave];
for(int n=0; n<Size; n++, Mod++){
source[n] ^= clave[Mod%8]; // Encripta hasta conseguir hacerlo con 8 bytes
// que es el tamaño establecido para la clave....
// ^ Es el operador XOR en C
}
}
Experimenta. Saludos. |
|
#3
|
|||
|
|||
|
Gracias por la pasiencia y la explicacion seguro que experimentare, despues les cuento como me fue
* si no les vuelvo a escribir es que se me exploto el celebro... (Broma) Muchas Gracias por la ayuda.... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ayuda programa.. | cmm07 | Varios | 13 | 17-07-2008 21:37:40 |
| Ayuda con un programa | kanedor | Varios | 6 | 14-05-2008 17:48:53 |
| Conectar archivos de ayuda a un programa | GINAUNICA | Varios | 3 | 15-04-2008 01:43:35 |
| Ayuda con programa | jorgegetafe | Varios | 4 | 07-12-2007 12:38:33 |
| Ayuda con programa de C | megadanzig | C++ Builder | 7 | 19-03-2004 19:26:48 |
|