A block cipher supporting a selectable block size of bit granularity
includes a recursive Feistal network structure having a plurality of
substitution boxes (S-boxes), each S-box being generated by a message
digest function used as a pseudo-random number generator and one of a
plurality of keys. Rather than use message digest functions as dynamic
S-boxes (as in the well-known Luby-Rackoff cipher), in the present
invention S-boxes may be constructed from a key at cipher build time. For
larger S-boxes, a subordinate Feistal network composed of S-boxes half the
size of the desired S-box may be used. Once the S-box size, N, is
sufficiently small (e.g., less than 16 input bits), a permutation of
integers 0 . . . 2.sup.N -1 may be computed using the message digest as a
cryptographic strength pseudo-random number generator (RNG) and the key.
The generated integers may be used within the S-box as part of a look-up
table for shuffling the input data to the S-box into encrypted output
data.
Uma cifra do bloco que suporta um tamanho de bloco selecionável do granularity do bocado inclui uma estrutura recursive da rede de Feistal que tem um plurality de caixas da substituição (S-caixas), cada S-caixa que estão sendo geradas por uma função do sumário da mensagem usada como um gerador pseudo-random do número e um de um plurality das chaves. Melhor que o sumário da mensagem do uso funciona como S-caixas dinâmicas (como na cifra well-known de Luby-Rackoff), nas S-caixas atuais da invenção pode ser construído de uma chave no tempo da configuração da cifra. Para S-caixas maiores, uma rede de Feistal do subordinado compôs das S-caixas que a metade do tamanho da S-caixa desejada pode ser usada. Uma vez o tamanho da S-caixa, N, é suficientemente pequeno (por exemplo, menos de 16 bocados input), uma permutação dos inteiros 0. . . 2.sup.N -1 pode ser computado usando o sumário da mensagem como um gerador pseudo-random do número da força cryptographic (RNG) e a chave. Os inteiros gerados podem ser usados dentro da S-caixa como a parte de uma tabela do look-up baralhando os dados de entrada à S-caixa em dados cifrados da saída.