python - 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。
解决方案
出于某种原因,大查询通过在 base64 中编码来输出摘要。
import hashlib
import base64
print base64.b64encode(hashlib.md5(b'hi').digest())
上面的输出应该与bigquery
. 我不确定为什么谷歌输出它是 base 64 编码,尽管文档没有提到它。
推荐阅读
- java - 将类型为 class 的变量分配给扩展声明的变量类型的不同类
- wpf - 刷新视图时,CollectionView.filter 委托未触发
- python-3.x - 从 varchar2 到日期的 Python cx_oracle 转换 - 错误“sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-01861”
- python - Google 功能无法使用来自 oauth2client 的服务帐户
- javascript - Node.js REST API 部署到云服务器
- r - 如何循环和打印所有链接 rselenium
- javascript - 不要直接改变状态的警告。在 reactjs 中使用 setState()
- c# - 这个foreach有问题吗?(错误,性能,...)
- javascript - JavaScript - 未找到数组项
- javascript - 如何从 API 获得的数据中使用 Vue axios 发布数组数据