Wolfram Language

Demonstre o efeito avalanche de uma função hash

Funções hash desempenham um papel fundamental na criptografia moderna. Uma característica importante e desejável de uma boa função hash é a não correlação de entrada e saída, ou o chamado "efeito avalanche", o que significa que uma pequena alteração na entrada resulta em uma mudança significativa na saída, tornando-a estatisticamente indistinguível de uma alteração aleatória na saída. A função Hash pode produzir uma variedade de hashes e retorná-los em vários formatos, facilitando o estudo de propriedades de hash.

Uma função hash demonstra o efeito de avalanche se um único bit invertido na entrada causar uma alteração de, em média, metade dos bits da saída. Este exemplo examina se a função "Keccak256" de Hash tem essa propriedade.

Gere uma lista de 10.000 números inteiros aleatórios de 256 bits.

Defina uma função que inverta um bit aleatório em um inteiro.

Crie um par de números inteiros que diferem em um bit.

Inverta um bit aleatório para cada inteiro.

Verifique que HammingDistance é exatamente 1 para cada par de inteiros.

Para aplicar a função hash aos bits inteiros, você precisa transformar cada número inteiro em um ByteArray.

Aplique a função Hash nos arranjos de bites com a função hash "Keccak256".

Calcule a distância de Hamming para cada par de inteiros.

Calcule a média das distâncias obtidas da função hash das distâncias de Hamming.

Observe que a média de 128 aqui é a mesma como se você estivesse comparando pares inteiros aleatórios, indicando que "Keccak256" codifica as entradas de maneira muito eficiente.

Calcule o desvio padrão.

Faça um histograma das distâncias e o PDF correspondente da distribuição normal com a média calculada e o desvio padrão.

Exemplos Relacionados

de en es fr ja ko zh