2024. 4. 11. 14:48ㆍ기타
해시 함수
해시 함수(hash function)는 임의의 크기의 데이터를 입력받아서 고정된 크기의 해시 값을 반환하는 함수를 말합니다.
해시 함수의 특징
단방향 함수
해시 함수는 단방향 함수로 입력 데이터를 해시 값으로 변환하는 것은 쉽지만, 해시 값을 원래 데이터로 복원하는 것(복호화)은 거의 불가능합니다.
이는 해시 함수가 데이터의 무결성을 보장하는 데 있어 중요한 특징입니다.
고정된 출력 크기
해시 함수는 입력데이터의 크기가 다르더라도 항상 일정한 길이의 결괏값을 출력합니다.
예를 들어서 SHA-256 알고리즘은 항상 결과값이 256bit로 출력됩니다.
이는 해시 함수를 사용하는 다른 응용 프로그램간에 일관성과 효율적인 처리를 보장합니다.
고유한 출력
해시 함수는 서로 다른 입력에 대해서 가능한 서로 다른 출력을 생성합니다.
즉, 동일한 입력에 대해서는 항상 동일한 출력을 생성하기도 합니다.
예를 들어, my secret 이라는 단어를 SHA-256 알고리즘을 이용해서 해시값을 생성하면 아래와 같습니다.
b9d1d013f600ec1bf16bae6a3634cad15dcc490c9f2835764201a41a1d70de44
이는 항상 동일하게 출력됩니다.
하지만, 해시 함수는 항상 고유한 출력을 보장하지 않습니다.
아주아주 드물게 서로 다른 입력에 대해서 동일한 해시값을 출력하는데, 이 것을 해시 충돌이라고 부릅니다.
추가적으로, 현재 사용을 권장하지 않는 해시함수가 있는데 대표적으로 MD5, SHA-1이 있습니다.
MD5는 충돌 공격에 취약하고, 실제로 이미 많은 충돌이 발견되었습니다.
SHA-1도 MD5와 마찬가지로 이미 보안이 뚫렸다고 여겨지고 있습니다.
그래서 현재 권장되는 해시함수로는 SHA-256, SHA-384, SHA-512이 있습니다.
'기타' 카테고리의 다른 글
Spring Securiy ROLE_ 에러 (0) | 2025.01.07 |
---|---|
컴퓨터가 문자를 인식하는 방법 (ASCII, 유니코드) (0) | 2024.08.24 |
SEO, 검색 엔진 최적화 (0) | 2024.06.20 |