Beispiel #1
0
int atohexa(char * buffer){
   int ans=0;
   int base=16;
   int n;
   if((*buffer)=='\0') return 0;
   int i=0;
   int l=strlen(buffer);
   
   char * aux;
   for(i=0;i<l;i++){
	aux[i]=0;
   }
   i=0;
     
   int stop=l-1;
   while(buffer[i]){
        if(isxdigit(buffer[i])){
		aux[stop--]=buffer[i++];
	}
	else{
		return 0;
	}
   }
  
   i=0;
   n=hexatoint(aux[i++]);
   ans=ans+n;
   while(i<l){
        n=hexatoint(aux[i++]);
        ans=ans+(n*base);
        base*=base;
   }
   return ans;
}
void SBOXAES(unsigned char *src, unsigned char *dst){
    if(!src||!dst)return;
    unsigned char fila=0,columna=0,aux[2];
    fila = src[0] & 0xF0;
    fila = fila >>4;
    columna= src[0] & 0x0F;
   // printf("fila:%d columnda : %d \n",fila,columna);
    memset(&aux,0,2);
    aux[0]=DIRECT_SBOX[fila][columna][0];
    aux[1]=DIRECT_SBOX[fila][columna][1];
    memset(dst,0,1);
    dst[0]=hexatoint(aux[0]);
    dst[0]=dst[0]<<4;
    columna=hexatoint(aux[1]);
    dst[0]=dst[0]^columna;
    //printf("salida: %x\n",dst[0]);
    return;
}