Wolfram 언어

해시 함수의 눈사태 효과 실증하기

해시 함수는 최신 암호화에서 기본적인 역할을 담당하고 있습니다. 좋은 해시 함수의 중요하고 바람직한 기능은 입력과 출력의 상관 관계가 없거나, 소위 "눈사태 효과"라고 하는 입력의 작은 변화가 출력에 큰 영향을 미치고, 통계적으로 무작위와 구별이 되지 않는 것을 말합니다. Hash 함수는 다양한 해시를 생성하고 그것을 여러 가지 형식으로 반환할 수 있기 때문에 해시 특성을 알아 보기 쉬워집니다.

입력 중 하나의 반전 비트가 평균 출력 비트의 절반의 변화를 일으킨다면, 해시 함수는 눈사태 효과를 나타냅니다. 이 예는 "Keccak256" 형의 Hash 함수가 이 특성을 갖는지 여부를 조사합니다.

256 비트의 임의의 정수 10,000개의 목록을 생성합니다.

정수 중에서 랜덤 비트를 반전시키는 함수를 정의합니다.

1비트만 다른 정수 쌍을 생성합니다.

각 정수에 대한 랜덤 비트를 반전시킵니다.

HammingDistance가 각 정수에 대해 엄격하게 1 임을 확인합니다.

정수의 실제 비트를 해시하기 위해 각 정수를 ByteArray로 변환합니다.

해시 함수 "Keccak256"을 사용하여 바이트 배열을 Hash합니다.

정수의 각 쌍에 대한 Hamming 거리를 계산합니다.

해시한 Hamming 거리의 평균을 계산합니다.

개별적으로 128의 평균치는 임의의 정수 쌍을 비교하는 것과 같고, "Keccak256"은 그 입력을 매우 효율적으로 암호화하고 있음을 보여줍니다.

표준 편차를 계산합니다.

거리 및 계산된 평균과 표준 편차를 갖는 정규 분포의 해당 편미분 방정식의 히스토그램을 생성합니다.

관련 예제

de en es fr ja pt-br zh