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; }