Olha amigo, não recomendo você usar o DES para microcontroladores se não for no mínimo um ARM 7, e ainda assim, já ia sofrer muito com a dec/encriptação dos dados, caso nunca tenha visto isso na sua vida.
A minha recomendação, é que você use um algorítimo mais simples e proprietário. Certamente já saiba que algorítimos proprietários são fáceis de serem quebrados por que entende muito, mas quebra o galho contra os curiosos em muitos níveis. Então recomendo você a usar o SSP da Innovative
B.1 Encryption routine
/***********************************************************************
Function CODE
Function to encrypt 16 bytes of data (4 long ints)
Usage: : code (long_data, long_current_key);
Parameters: data() - 16 bytes to be encrypted packed into 4 long ints
Key() - key to use packed into array of 2 long ints
Returns: data() - 16 bytes of encrypted data packed into 4 long ints
Locals: w,x,y,z,delta,n
/***********************************************************************
void code(long* data, long* key) {
unsigned long w=data[0],x=data[1],y=data[2],z=data[3], sum=0, /* set up */
delta=0x9e3779b9, n=32 ; /* a key schedule constant */
while (n-->0) { /* basic cycle start */
sum += delta ;
w += (z<<4)+key[0] ^ z+sum ^ (z>>5)+key[1] ;
x += (w<<4)+key[1] ^ w+sum ^ (w>>5)+key[0] ;
y += (x<<4)+key[0] ^ x+sum ^ (x>>5)+key[1] ;
z += (y<<4)+key[1] ^ y+sum ^ (y>>5)+key[0] ;
} /* end cycle */
data0]=w ; data[1]=x ; data[2]=y ;data[3]=z;
Todo o doc pode ser acessado em:
http://www.innovative-technology.co.uk/pdfs/ssp.pdf
Agora se quiser continuar com a épica vontade de implementar DES num microcontrolador, saiba que é necessário, para o mesmo rodar em um Pentium200 daria umas 50000 cifraçoes de 64 bits.
Um Atmega16 de 8Mhz são 786 ciclos por bytes, sendo 8Kbits por segundo
Um ARM7-60Mhz são 350 ciclos por byte.
Um ARM9-200Mhz são 101 ciclos por byte.
Esses são os que eu já utilizei, pra modo de teste, agora tenho trabalhos com SHA1 e outros parecidos. É só escolher o que usar.
Um comparativo do ARM7 e os diferentes tipos de encriptação:
" An ARM7 with an embedded encryption engine can achieve AES data rates as high as 20 Mbits/s. It also allows DES and triple DES encryption at 12.8 and 11.2 Mbits/s respectively. However, although the hardware AES encryption rate is nearly four times faster than a software implementation, the encryption rate still may not be fast enough for higher-data-rate Ethernet or high-speed SPI applications. "
Implementação de um dos orientadores nossos da USP que trabalham com isso:
http://fp.gladman.plus.com/cryptography ... /rijndael/