출력에 작은 변화가있을 때 입력의 작은 변화가 발생하는 해시 함수가 있습니까? 예를 들면 다음과 같습니다.유사한 입력을 유사한 출력에 매핑하는 해시 함수?
hash("Foo") => 9e107d9d372bb6826bd81d3542a419d6
hash("Foo!") => 9e107d9d372bb6826bd81d3542a419d7 <- note small difference
출력에 작은 변화가있을 때 입력의 작은 변화가 발생하는 해시 함수가 있습니까? 예를 들면 다음과 같습니다.유사한 입력을 유사한 출력에 매핑하는 해시 함수?
hash("Foo") => 9e107d9d372bb6826bd81d3542a419d6
hash("Foo!") => 9e107d9d372bb6826bd81d3542a419d7 <- note small difference
간단한 해결책은 모든 바이트 모듈 N을 XOR하는 것입니다. 64 비트 해쉬의 경우 XOR ([0]^input [8]^input [16]) + 256 * (input [1]^input [9]^input [17]) 등등이됩니다. 그래서, "Foo"는 "Foo \ 0 \ 0 \ 0 \ 0 \ 0"및 "Foo!"로 해시합니다. 해시 "Foo! \ 0 \ 0 \ 0 \ 0".
LSH (Localality-sensitive hashing)는 고차원 데이터의 차원을 줄입니다.
https://en.wikipedia.org/wiki/Locality-sensitive_hashing
가 참조 : 여기서
https://en.wikipedia.org/wiki/Perceptual_hashing는 DNA 서열에 지각 해싱의 좋은 예는 높은 확률로 동일한 "버킷"유사한 항목 맵되도록 LSH 입력 항목을 해시 :
것은 * 정말 * 나쁜 해시 알고리즘이 될 것이라고 .... – skaffman
암호화 해시의 경우 예, 이것이 좋지 않지만 다른 용도로 사용하고 싶습니다. –
필자는 그러한 기능의 의도 된 목적이 무엇인지에 관해 더 자세히 설명해야한다고 생각합니다. 해당 속성을 사용하는 암호화 해시 함수가 없지만 다른 것을 찾고 있습니까? – Krystian