![]() |
![]() |
| 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
|
|||
|
|||
|
Gracias por la ayuda,
aaa y lo que dije que no tenia acceso al buscador no es sierto es el explorador mio que tenia problema, pero ya lo solucione, pienso buscar bastante sobre este tema que me gusta... |
|
#2
|
|||
|
|||
|
escafandra si no te es molestia de explicarme un poco sobre el ejemplo que me pusiste, lo que pasa es que tengo algunas duda sobre ese metodo de encriptacion XOR que me pusiste antreriol....
gracias de antemano. |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
|||
|
|||
|
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 |
|