www.pudn.com > Gh0st.rar > encode.h, change:2008-01-18,size:1069b


 
static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 
 
int base64_encode(const void *data, int size, char **str) 
{ 
  char *s, *p; 
  int i; 
  int c; 
  const unsigned char *q; 
 
  p = s = (char*)malloc(size*4/3+4); 
  if (p == NULL) 
      return -1; 
  q = (const unsigned char*)data; 
  i=0; 
  for(i = 0; i < size;){ 
    c=q[i++]; 
    c*=256; 
    if(i < size) 
      c+=q[i]; 
    i++; 
    c*=256; 
    if(i < size) 
      c+=q[i]; 
    i++; 
    p[0]=base64[(c&0x00fc0000) >> 18]; 
    p[1]=base64[(c&0x0003f000) >> 12]; 
    p[2]=base64[(c&0x00000fc0) >> 6]; 
    p[3]=base64[(c&0x0000003f) >> 0]; 
    if(i > size) 
      p[3]='='; 
    if(i > size+1) 
      p[2]='='; 
    p+=4; 
  } 
  *p=0; 
  *str = s; 
  return strlen(s); 
} 
 
char* MyEncode(char *str) 
{ 
	int		i, len; 
	char	*p; 
	char	*s, *data; 
	len = strlen(str) + 1; 
	s = (char *)malloc(len); 
	memcpy(s, str, len); 
	for (i = 0; i < len; i++) 
	{ 
		s[i] ^= 0x19; 
		s[i] += 0x86; 
	} 
	base64_encode(s, len, &data); 
	free(s); 
	return data; 
}