[Swift] Swift는 어떤 해시 알고리즘을 쓸까? / Hashable
·
Swift/개념 & 응용
Hashable 지난 포스팅에서 다뤘던 Hashable은 프로토콜 중 하나로, Hasher에 해시되어 정수 해시 값을 생성할 수 있는 타입을 정의합니다. (Hashable에 대한 더 자세한 내용은 여기에서 확인해주세요.) 오늘 포스팅은 Hasher가 어떤 해시 알고리즘을 사용하는지에 대한 내용입니다. 궁금해서 찾아봤는데 생각보다 흥미로워서 공유하기 위해 포스팅 작성합니다. 사설이 긴 편이니 바쁘신 분은 SipHash 문단부터 읽어주세요. 기존 방법 Swift 4.1부터 Equatable과 Hashable 프로토콜에 대한 적합성을 자동으로 합성해주기 시작했고, 지금의 Hasher를 이용한 해시 방법은 Swift 4.2부터 탄생했습니다. 이전에는 개발자가 직접 hash 함수를 만들어줬어야 했습니다. 찾아보니..
[Swift] Hashable
·
Swift/개념 & 응용
Hash Hashable에 대해 알아보기 전에 Hash에 대해 알아야 합니다. Hash란 해시 함수에 의해 얻어지는 값으로 해시값, 해시코드로도 불리는데요. 해시 함수는 특정 input을 넣었을 때 항상 일정한 output이 나오는 함수입니다. 위 사진처럼 "안녕하세요"가 input으로 들어가면 해시 로직을 거쳐 항상 동일한 output이 나와야 합니다. input이 달라지면 output도 달라져야 하는데요. 로직에 따라 다른 input이라도 output이 같을 수 있습니다. 이때! 다른 output이 나오는 input의 개수가 많으면 많을수록 좋은 해시함수랍니다. 아무튼, 오늘 포스팅에서 중요한 해시의 성질은 input을 넣었을 때 "일정한" output이 나와야 한다는 점입니다. 이것만 기억해 주세요..
유정주
'해시' 태그의 글 목록