해시
해시는 한 값을 다른 값으로 변환하는 함수입니다. 데이터를 해시하는 것은 컴퓨터 과학에서 흔히 사용되는 방법이며, 여러 가지 목적으로 활용됩니다. 예로는 암호화, 압축, 체크섬 생성, 데이터 인덱싱 등이 있습니다.
해싱은 원래 데이터를 다른 값으로 가리기 때문에 암호화에 적합합니다. 해시 함수는 해시 테이블에서 값을 조회해야만 디코딩할 수 있는 값을 생성하는 데 사용할 수 있습니다. 이 테이블은 배열, 데이터베이스 또는 다른 데이터 구조일 수 있습니다. 우수한 암호화 해시 함수는 역변환이 불가능하므로 역으로 분석해 원래 값을 알아낼 수 없습니다.
손실 이미지 압축 및 미디어 압축과 같은 다양한 유형의 압축은 파일 크기를 줄이기 위해 해시 함수를 사용할 수 있습니다. 데이터를 더 작은 값으로 해시하면 미디어 파일을 더 작은 조각으로 압축할 수 있습니다. 이러한 유형의 단방향 해싱은 되돌릴 수 없지만, 디스크 공간을 더 적게 차지하는 원래 데이터의 근사치를 생성할 수 있습니다.
해시는 파일의 무결성을 확인하는 체크섬을 생성하는 데도 사용됩니다. 체크섬은 파일의 비트 또는 디스크 이미지와 같은 데이터 블록의 비트를 기반으로 생성되는 작은 값입니다. 파일의 복사본(인터넷에서 다운로드한 파일 등)에서 체크섬 함수를 실행하면 원본 파일과 동일한 해시 값이 생성되어야 합니다. 파일에서 동일한 체크섬이 생성되지 않으면 파일의 내용이 변경된 것입니다.
마지막으로 해시는 데이터를 인덱싱하는 데 사용됩니다. 해시된 값은 데이터를 해시 테이블 내의 개별 "버킷"에 매핑하는 데 사용할 수 있습니다. 각 버킷에는 원본 데이터를 가리키는 포인터 역할을 하는 고유 ID가 있습니다. 이렇게 하면 원본 데이터보다 훨씬 작은 인덱스가 생성되므로 값을 더 효율적으로 검색하고 액세스할 수 있습니다.
지식 테스트하기