为什么 md5 算法在散列时接受 numpy 的 int64 但不接受整数?
Why does the md5 algorithm accept numpy's int64 but not integers when hashing?
import hashlib
hash = hashlib.md5
我目前正在尝试了解为什么以下行有效:
hash(np.int64(identifier)).digest()
而这一行没有:
hash(identifier).digest()
第二行基本上显示了以下错误:object supporting the buffer API required
附带说明一下,identifier
变量是一个整数。据我所知,整数(Python中的默认整数)占用32位(或4字节)而numpy的np.int64占用64位(或8字节)内存。
那么,为什么第一行有效而第二行无效?这是 md5 的要求吗?
之所以有效,是因为 numpy 整数足以实现所谓的 Buffer API。 hashlib.md5 需要一个类似字节的对象。 python int 不是类似字节的对象。一个实现了 Buffer API 的对象可以被翻译成一个类似字节的对象。一般情况下与MD5算法无关
import hashlib
hash = hashlib.md5
我目前正在尝试了解为什么以下行有效:
hash(np.int64(identifier)).digest()
而这一行没有:
hash(identifier).digest()
第二行基本上显示了以下错误:object supporting the buffer API required
附带说明一下,identifier
变量是一个整数。据我所知,整数(Python中的默认整数)占用32位(或4字节)而numpy的np.int64占用64位(或8字节)内存。
那么,为什么第一行有效而第二行无效?这是 md5 的要求吗?
之所以有效,是因为 numpy 整数足以实现所谓的 Buffer API。 hashlib.md5 需要一个类似字节的对象。 python int 不是类似字节的对象。一个实现了 Buffer API 的对象可以被翻译成一个类似字节的对象。一般情况下与MD5算法无关