티스토리 뷰
해시는 특정 데이터를 그 길이에 관계없이 고정된 길이의 값으로 변환한 값.
이렇게 해시값을 만들어 내는 알고리즘을 Hash Function이라고 함.
유명한 hash algorithm의 하나인 SHA-256은 (Secure Hash Algorithm)
이름에서도 알 수 있듯이 256-Bit, 즉 32-Byte 결과를 생성.
Hello World! 문자열에 SHA-256을 적용시,
7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069
A와 B라는 데이터와 그 해시값을 각각 A', B'라 한다면 A' != B'라면 A != B 라는 것이 보장됨.(해시 값이 다르면 원본도 다름)
그러나 A != B 이지만 A' == B' 는 발생할 수도 있음.(해시충돌, Hash collision)
해시 값이 길고 알고리즘이 우수할 수록 충돌이 발생할 확률은 극도로 낮아짐.
해시가 주로 사용되는 분야
1. 암호화 관련 영역
A' != B' 면 A != B 라는 성질을 이용해 원본 데이터에 대한 해시를 계산해 두면 나중에 데이터가 변조된다면 hash 값이 달라지게 됨.
이를 이용해 데이터 변조 여부를 판별하기 위한 디지털 서명 등의 기본 원리로 사용.
2. 데이터 인덱싱
다양한 종류의 데이터를 비교적 짧은 길이의 해시로 indexing 해두면 검색이 용이.(버킷, bucket)
"월요일" -> 0f
"화요일" -> a0
"수요일" -> ca
"목요일" -> 14
"금요일" -> ca
이런 식으로 hashing 이 된 상태에서 "팥쥐"를 찾는다고 하면 "팥쥐"의 해시를 계산해서 ca bucket만 검사하면 됨.
만약 linear search를 한다면 총 5번 검사를 해야 하겠지만 해시를 이용하면 "수요일"과 "금요일" 두번의 검사로 끝남.
'Study' 카테고리의 다른 글
DB(디비) Tool(도구) 관련 (0) | 2024.03.15 |
---|---|
Java(자바) Linux(리눅스) Command Execute(명령어 실행) (0) | 2024.03.15 |
Apache(아파치) Install(설치) (0) | 2024.02.18 |
cygwin(시그윈) 관련 (0) | 2024.02.18 |
Python(파이썬) 관련 (0) | 2024.02.18 |