>백엔드 개발 >Golang >Go와 Python 간의 Murmur3 해시 호환성

Go와 Python 간의 Murmur3 해시 호환성

王林
王林앞으로
2024-02-09 13:10:191215검색

Go 和 Python 之间的 Murmur3 哈希兼容性

php 편집기 Zimo가 Go와 Python 간의 Murmur3 해시 호환성을 소개합니다. Murmur3은 데이터 구조 및 알고리즘의 해시 연산에 일반적으로 사용되는 효율적인 해시 알고리즘입니다. Murmur3 해싱 알고리즘은 Go와 Python 두 가지 프로그래밍 언어에서 다르게 구현되므로 사용 시 호환성 문제가 발생할 수 있습니다. 이 기사에서는 Go와 Python의 Murmur3 해싱 알고리즘의 차이점을 자세히 설명하고 서로 다른 언어 간에 데이터를 전달할 때 올바른 해시 호환성을 보장하는 솔루션을 제공합니다.

질문 내용

우리는 동일한 방식으로 murmur3 해시를 계산해야 하는 Python과 Go의 두 가지 라이브러리를 가지고 있습니다. 불행하게도 우리가 아무리 노력해도 라이브러리에서 동일한 결과를 얻을 수 없었습니다. Java 및 Python에 대한 이 질문으로 판단하면 호환성이 반드시 간단하지는 않습니다.

이제 우리는 Python mmh3을 사용하고 있으며 github.com/spaolacci/murmur3 라이브러리로 이동합니다.

진행 중:

으아악

파이썬에서:

으아악

In go에서는 murmur3返回一个uint64,所以我们假设python中的signed=false;但是我们也尝试了 signed=true 일치하는 해시 값을 얻지 못합니다.

우리는 다양한 라이브러리에 열려 있지만 문자열에서 base64로 인코딩된 해시를 계산하는 go 또는 python 접근 방식에 문제가 있는지 알고 싶습니다. 도움을 주시면 감사하겠습니다.

해결 방법

첫 번째 Python 결과는 거의 정확합니다.

으아악

진행 중:

으아악

결과:

으아악

그래서 이 두 단어의 순서가 바뀌었습니다. Python에서 동일한 결과를 얻으려면 다음을 시도해 보세요:

으아악

위 내용은 Go와 Python 간의 Murmur3 해시 호환성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제