본문 바로가기

개발용어

알아두면 좋은 개발 용어 9 (Hash, 해시)

반응형

며칠전 정보보호실 담당자와 대화를 하던 중,

"지금 DB에 저장된 값을 해시로 처리해서 사용하면 어떠세요?" 라는 말을 들었습니다.

"그럼 저희 작업이 많아지는데, 그건 개발 담당자와 이야기를 좀 해볼게요."

'해시라 ...' 

 

해시를 아예 모르는 건 아닌데, 그렇다고 이걸 구현하는 개발자만큼 아는 건 아닙니다. 

암튼, 잘 정리가 될지는 모르겠지만, 우선 해시를 정리해보려고 합니다. 

해시에 대해서 많이 알 필요는 없을 것 같고, 해시란 것이 어떤 것이고, 어떤 특징을 갖는다는 것만 알면 될 것 같습니다.

 

해시(Hash)

  • 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값

 

해시 특징

  • 무결성
    • 특정한 데이터를 고정된 길이의 데이터로 변환하여 문장 내용이 완전히 같으면 완전히 같은 해시값을 가짐. 문장 일부라도 다르면 완전히 다른 해시값을 가짐
    • 예시에서 보시면 해시값이 '희 -> 화'로 바뀌었는데, 아주 다른 해시값이 나오게 됩니다.
  • 보안성
    • 기본적으로 복호화 불가능하여 해시값 조합을 통해서 원문을 유추할 수 없음
      • 원문과 해시값 사이에 선형적 관계가 없음
      • 고정된 길이 숫자로 원래 정보를 손실됨
  • 기타
    • 특정 배열의 인덱스나 위치를 위치를 입력하자고자 하는 데이터의 값을 이용해 저장할 수 있음 
    • 해시를 이용하면 즉시 저장하거나 찾고자하는 위치를 참조할 수 있으므로 빠른 속도로 처리할 수 있음

 

해시 알고리즘 종류

  • MD (Message-Digest Algorithm)
  • SHA (Secure Hash Algorithm)  

 

해시 활용

  • 비밀번호, 전자서명, 전자투표, 전자상거래 등과 같은 민감한 입력의 무결성을 검증할 때 사용됨 
  • 블록체인의 핵심기술

해시 함수(Hash Funtion)

  • 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수

해시 테이블(Hash Table)

  • 키와 값을 매핑해 둔 데이터 구조로 해시함수를 이용하여 검색하고자 하는 값을 변환하면 그 값이 저장된 위치를 즉시 알아낼 수 있음
  • 방대한 데이터에서 특정한 값을 검색할 때 해시 테이블을 사용하면 검색 시간을 획기적으로 단축할 수 있음

해싱(Hashing)

  • 해시함수를 사용하여 주어진 값을 변환한 뒤, 해시 테이블에 저장하고 검색하는 기법. 해싱에 사용되는 자료구조는 배열(array)과 연결리스트(linked list)가 조합된 형태임 

 

간단하게 해시를 정리해보면, 복호화가 불가능하고 무결성을 가진 원본데이터를 특정 길이로 매핑한 값으로 비밀번호와 블록체인 등에 사용된다, 라고 쓸 수 있을 것 같습니다.   

이상입니다.

 

참고문헌

반응형