복어와 같은 암호 알고리즘은 해시 알고리즘의 일부로 사용할 수 있습니다. 복어는 단지 "빌딩 블록"일 뿐이며 다른 목적으로 사용될 수 있습니다. 암호화/복호화 도구 또는 해시 알고리즘의 암호화 기본 요소로 구현할 수 있습니다. 이것은 갑자기 해시 알고리즘을 되돌릴 수 있음을 의미하지 않습니다.
해시 알고리즘의 출력이 항상 일정한 길이라는 사실은 되돌릴 수없는 공짜입니다. 무한 수의 잠재적 입력 값을 가역적으로 고정 길이 출력으로 암호화 할 수 없습니다. 알고리즘은 필요에 따라 손실이 있습니다입니다. 간단한 예시로서
는 복어 (이어서
는를 해독 할 수있는)
암호화 데이터와 같이 사용될 수있다 :
가
ABCD EFGH IJKL MNOP ...
| | | |
v v v v
NPCQ JQ0C MPZW LKAQ
각 블록 입력 개별적 암호문으로 온 복어에 의해. 그 이유는 복어를 블록 암호 (스트림 암호과는 반대로 입력을 스트림으로 처리하고 고정 길이 블록 집합이 아닌)이라고합니다. 이 작업의 결과는 되돌릴 수있는 블록 묶음입니다. 출력은 입력과 같은 길이입니다 (필요한 경우 블록을 채우기위한 패딩 포함).
복어를 이용한 해시 함수는 다음과 같이 작동한다 : 각 블록의 출력은 하나로 두 블록을 결합 압축 함수 통해 실행
ABCD EFGH IJKL MNOP ...
| | | |
v v v v
NPCQ JQ0C MPZW LKAQ
| | | |
+----+--> PMQZ --+--> OLMQ --+--> UALG ...
. 첫 번째 두 블록의 출력이 결합되어 (PMQZ
),이 값은 세 번째 블록의 출력과 결합됩니다 (OLMQ
). 마지막 압축 결과는 해시의 결과입니다.
보시다시피 복어는 내부적으로 암호 암호로 사용되지만 출력은 출력을 뒤집을 수없는 손실 압축 기능과 결합됩니다.