首页 > 解决方案 > Python3 hashlib 和 Google BigQuery 的 MD5 哈希输出的差异

问题描述

在 Google BigQuery 中运行以下查询会给出以下输出:SfaKXIST7CwL9ImCHCH8Ow==

select md5( "hi" )

然而,在 Python 中运行 MD5 散列的代码会给出不同的输出: 49f68a5c8493ec2c0bf489821c21fc3b

import hashlib
hashlib.md5( b"hi" ).hexdigest()

由于它们都使用相同的算法,所以输出不应该也相同吗?这里不同的原因是什么?

同样在BigQuery 文档中,代码会生成一个摘要,而不是一个 hexdigest,但是当我在 BigQuery 中执行该命令时,它会给出一个 hexdigest。

标签: pythonhashgoogle-bigquery

解决方案


出于某种原因,大查询通过在 base64 中编码来输出摘要。

import hashlib
import base64
print base64.b64encode(hashlib.md5(b'hi').digest())

上面的输出应该与bigquery. 我不确定为什么谷歌输出它是 base 64 编码,尽管文档没有提到它。


推荐阅读