Resenha Algoritmo DES
A função *auth_DEShash é a principal que vai criptografar a mensagem de fato, recebendo os dados e a chave comprimida para a criptografia. Inicialmente a função utiliza uma outra função previamente declarada, a função Permute, que faz a permutação da chave e a permutação inicial segundo o padrão DES (ambas permutações utilizando as tabelas inicializadas). Em seguida se inicializa um laço, que indica as 16 rodadas necessárias. Dentro do laço é possível observar o detalhe de cada rodada. Para a execução de cada rodada, primeiramente a mensagem é dividida nos ponteiros *L e *R com 32 bits cada. A função KeyShift que aparece logo depois vai comprimir a chave para que, mais uma vez, seja utilizada a função Permute, para gerar a subchave que será utilizada na rodada.
Seguindo as especificações do algoritmo, a parte R da mensagem passa novamente pela função Permute, dessa vez utilizando a tabela DataExpansion, para expandir a mensagem em 48bits e então passar pela função xor juntamente com a subchave. Após isso a função SBox é chamada para ser utilizada ainda na parte R da mensagem. A função SBox promove a criptografia por substituição na mensagem e a comprime novamente a 32bits. A próxima chamada da função Permute promove uma permutação PBox, recebendo como parametro a tabela PBox previamente inicializada. Então o algoritmo passa pelo último xor, utilizando sua função e recebendo os parâmetros Rn (parte R ao passar pelas permutações, SBox e xor) e L (fazendo um xor do lado L com o lado R já criptografado).
Após isso, mais um laço é utilizado, dessa vez passando o a parte R