.
Es una alternativa a la encriptacion Xor por emdio de un Valor numerico dado en este caso un INT.

La funcion como es claro y deberia de serlo NO MANEJA de manera interna la creacion de la memoria, en otras palabras, trabaja con el puntero al buffer indicado.

Código: Seleccionar todo


#include <stdio.h>
#include <string.h>

#define BYTE unsigned char
#define SIZE_INT sizeof(int)

BYTE* crypt_Xor(BYTE* pbyData, size_t szLn, int iPass);

int main()
{
  char  szCadena[]  = "Hola Mundo";
  int   iPass       = 666;
  printf("%s\n", crypt_Xor((BYTE*)szCadena, strlen(szCadena), iPass));
  printf("%s\n", crypt_Xor((BYTE*)szCadena, strlen(szCadena), iPass));
  getchar();
  return 0;
}

BYTE* crypt_Xor(BYTE* pbyData, size_t szLn, int iPass) {
/**
-by BlackZeroX (http://infrangelux.sytes.net/blog/)
**/
    size_t  i       = 0;
    int*    pIntData= (int*)pbyData;

    if (!pbyData || szLn == 0) return NULL;

    for (i = (szLn >> (SIZE_INT>> 1 )); i > 0; i--)
        *(pIntData++) ^= iPass;

    for (i = (szLn % SIZE_INT);i > 0; i--)
        pbyData[szLn - i] ^= ((BYTE*)&iPass)[(!(SIZE_INT - i) & 0xf)];

    return pbyData;
}

Temibles Lunas!¡.
Web: http://infrangelux.sytes.net/
ScanX: http://ScanX.sytes.net/
FileX: http://FileX.sytes.net/
Blog: http://BlogX.sytes.net/

Imagen


The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi religion
Responder

Volver a “Fuentes”