단방향 암호화는 암호화만 지원하고 복호화는 지원하지 않는 암호화 방식을 일컫는다.
다른 말로 **hash(다지다)**라고도 하는데, 무언가를 다지면 원형을 알아볼 수 없는 것을 암호화에 빗댄 것이다.

단방향 암호화는 무결성 특성을 극대화하는 방식이다.

복호화를 할 수 없는데 어떻게 원본과 암호화된 내용이 동일함을 확인할 수 있을까? 다음과 같은 상황을 가정해보자.

A라는 사람이 B라는 사람에게 특정한 파일을 전송받기로 했다. A는 B를 신뢰하지만, 전송되는 과정에서 파일이 조작되었을 가능성을 배제할 수 없다.

따라서 B는 A에게 파일을 전송하는 동시에 파일에 hash 알고리즘을 적용하여 얻은 문자열을 같이 보낸다. md5를 이용하여 hash 했다고 가정하자.

A는 파일을 전송받은 후, 해당 파일을 md5로 hash한 뒤 그 값을 B가 보낸 문자열과 비교한다. 문자열이 같다면 B가 보낸 파일과 A가 보낸 파일이 동일함을 알 수 있다.

hash는 또한 다음과 같은 목적을 위해 사용된다.

  1. 무결성 검증 Verifying the integrity of messages and files
  2. 전자 서명을 하는 경우 Signature generation and verification
  3. 파일 또는 데이터의 신뢰할만한 식별자가 필요할 때 File or data identifier
  4. 사용자의 비밀번호를 서버에 안전하게 저장할 때 Password verification
  5. 암호 화폐 채굴 시 작업 증명을 위하여 Proof-of-work

참고자료

생활코딩