Hash Algorithm 이란

지인호·2022년 1월 9일
0

TIL

목록 보기
15/28
post-thumbnail

동적인 길이의 데이터를 정적인 길이의 hash로

임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 암호화 알고리즘이다

  • 매핑된 데이터를 저장한다는 관점에서 볼땐 Hash
  • 임의의 길이의 데이터 x 를 고정된 길이의 데이터 y 로 매핑하는 함수의 관점에서 볼땐 HashFunction
  • 해시를 구하는 과정이라는 관점에서 볼땐 Hashing 이라고한다.

Hash 기본원리

원본 데이터를 x라고 할때,

fun hash(x 를 인자로 받는다) 
	x를 숫자로 변환한값을 data 에 대입한다.
	data 를 특정한 수로 나눈다. 이때, 나눈 값()을 n 에 대입한다
	n 의 소수점 a 자리부터 b자리까지의 (b-a) 자리수를 반환한다

같은 원리로 동작한다.

따라서, 해시함수는 연산 처리 속도가 매우 빠르고 출력을 통해 입력을 역산할 수 없다

Hash 의 특징

  • 눈사태 효과 원본 데이터가 약간만 달라져도 해시값이 확연하게 달라진다.
  • 압축효과 어떤 입력값에도 항상 고정된 길이의 해시값 을 출력한다
  • 역상저항성 출력값을 통해 입력값을 찾을 수 없다
  • 제 2역상저항성 입력값과 출력값을 통해 또 다른 입력값 을 찾을 수없다.

이러한 해시알고리즘의 종류로는 SHA 알고리즘, MD알고리즘 등이 있다.

Hash 의 필요성

  • 암호화
    비밀번호 암호화에 있어 해시는 필수적이다.
    항상 같은 입력값에 대해 같은 출력값을 반환하지만
    출력값을 통해 입력값을 유추할 수 없으므로,
    비밀번호 저장시 사용자가 입력한 **비밀번호를 해싱하여** 저장한다.
  • 자료구조 해시값은 겹치기 힘드므로, 자료구조의 인덱스로 활용하기 좋다.
    자세한 내용은 HashMap, HashTable 참조
  • 파일 CheckSum 특정 파일, 어플리케이션의 무결성을 검사하는데 사용한다.
    해시값은 원본데이터가 변조되어도 크게 변하므로,
    원본 데이터의 해시값과 변조가 의심되는 데이터의 해시값을 비교함으로서,
    파일/어플리케이션의 무결성을 쉽게 검증할 수 있다.
profile
테오의 스프린트 17기 퍼실리테이터

0개의 댓글