Python 2.7 hashlib哈希器究竟如何处理输入?

Python 2.7 hashlib哈希器究竟如何处理输入?,python-2.7,input,hashlib,Python 2.7,Input,Hashlib,关于hashlib哈希器有这样的说法: hash.update(arg) Update the hash object with the string arg. [...] 但我见过有人向it提供非字符串的对象,例如 考虑到Python的duck类型,可以指定非字符串参数并不奇怪 问题是:我如何知道散列程序对参数做了正确的处理 我无法想象散列程序会天真地对参数进行浅层迭代,因为如果使用多个维度的ndarray,则可能会失败-如果进行浅层迭代,则会得到一个n-1维度的ndarray。使

关于hashlib哈希器有这样的说法:

hash.update(arg)

    Update the hash object with the string arg. [...]
但我见过有人向it提供非字符串的对象,例如

考虑到Python的duck类型,可以指定非字符串参数并不奇怪

问题是:我如何知道散列程序对参数做了正确的处理

我无法想象散列程序会天真地对参数进行浅层迭代,因为如果使用多个维度的ndarray,则可能会失败-如果进行浅层迭代,则会得到一个n-1维度的ndarray。

使用。这意味着它可以是字符串、Unicode或缓冲区接口

您不能在纯Python中定义,但是像numpy这样的C库可以和do—这允许将它们传递到
hash.update


多维数组之类的东西可以正常工作—在C级别上,它们被存储为连续的字节序列。

numpy的多维数组可能“正常”,但它是否算作“正常”这是否真的取决于应用程序和库(如numpy)对其通过缓冲区接口呈现的数据的确切内存布局的保证。它会永远是一样的吗?按行还是按列排序?较大值数组的字节以什么格式存储?等在散列除明显的线性字节序列之外的内容之前,请确保这些内容始终相同。