당신이하는 일은 "암호화"그 자체가 아닙니다. "해싱"입니다. 이 두 가지의 주요 차이점은 암호화 는 쉽게 되돌릴 수 있다는 것 입니다 (물론 올바른 키를 사용하여). 해시는 원래 메시지를 아는 것 이외의 다른 상황에서는 되돌릴 수 없도록 설계되었습니다.
이론적으로 해시는 "무작위 오라클", 즉 아이덴티티 메모리를 가진 가상의 균류와 상한 범위없이 완벽하게 고유하고 완벽하게 임의의 숫자를 생성하는 방법을 시뮬레이션합니다. 이 작은 사람에게 메시지를 보내면 두 가지 중 하나가 일어날 것입니다. 그는 이전에 메시지를 보지 못했습니다.이 경우 새 임의의 숫자를 생성하여 다이제스트로 제공하거나 이전에 해당 메시지를 보았으므로 메시지를 볼 때 생성 한 숫자를 기억하고 알려줍니다 처음으로. 이 이론적 모델에서는 메시지와 다이제스트 사이에 관계가 없으며 RNG에서 단일 번호가 두 번 표시되지 않으면 충돌 가능성이 없습니다.
불행히도 이상적인 랜덤 오라클은 없습니다. 이 아이디어는 오라클이 어디에서나 해시 한 모든 메시지를 효율적으로 저장하고 효율적으로 리콜 할 수있는 능력, 클라이언트가 십진수 또는 수십만 자릿수의 숫자를 받아 들일 수있는 능력과 같은 디지털 구현에 실질적인 불가능 성을 가지고 있습니다. 길이. 대신, 메시지 자체에서 작동하는 돌이킬 수없는 (단방향) 수학 연산 인 해시 함수가있어 명백 하지 않은 결정적 변환 (동일한 메시지 => 동일한 해시)을 만듭니다.해시와 원본 메시지의 관계. 주석에서 언급 한 것처럼 메시지를 체계적으로 변경하여 생성 된 해시 값에 대한 예측 가능한 변경도 없어야합니다. 메시지의 단일 비트가 변경되면 다이제스트의 각 비트가 50 %의 확률로 변경 될 수 있습니다.
해시 함수에는 여러 가지 용도가 있습니다. 두 당사자 모두 일반 텍스트 비밀을 알 필요없이 챌린지 확인 (암호와 같은 로그인 자격 증명 생각)에 사용되며 메시지가 변조되거나 손상되지 않았 음을 확인하는 체크섬으로 사용됩니다. 또한 소위 "작업 증명"시나리오에서도 사용됩니다. 완료하기는 쉽지만 검증하기 쉬운 계산 작업.
SHA256 해시 다이제스트를 효율적으로 되돌려 해시를 발생시키는 메시지 (모든 메시지)를 생성하는 방법을 찾은 경우 실제로 해시가 근본적으로 손상되었음을 증명하는 증거가됩니다. 실제로 SHA256은 안전하다고 믿습니다. 아무리 실용적이든 해시 다이제스트로 시작하여 단순히 모든 가능성을 시도하는 것보다 적은 작업이 필요한 충돌 메시지를 생성하는 문서화 된 방법이 없음을 의미합니다 (SHA-256의 경우 2 이상). ^ 256 ~ = 10 ^ 77 가능성).