我想用sha1 alghoritm来计算一些数据的校验和,事情是在python hashlib
输入是以字符串形式给出的。Python - 散列二进制值
是否有可能在python中计算sha1,但以某种方式将原始字节作为输入?
我在问,因为如果我想要计算一个文件的散列,在CI中将使用openssl
库并只传递正常字节,但在Python中我需要传递字符串,所以如果我要计算某些特定文件的散列我会在两种语言中得到不同的结果。
我想用sha1 alghoritm来计算一些数据的校验和,事情是在python hashlib
输入是以字符串形式给出的。Python - 散列二进制值
是否有可能在python中计算sha1,但以某种方式将原始字节作为输入?
我在问,因为如果我想要计算一个文件的散列,在CI中将使用openssl
库并只传递正常字节,但在Python中我需要传递字符串,所以如果我要计算某些特定文件的散列我会在两种语言中得到不同的结果。
在Python 2.x中,str
对象可以是任意字节流。所以是的,您只需将数据传递到hashlib
函数str
即可。
>>> import hashlib
>>> "this is binary \0\1\2"
'this is binary \x00\x01\x02'
>>> hashlib.sha1("this is binary \0\1\2").hexdigest()
'17c27af39d476f662be60be7f25c8d3873041bb3'
那么,你可以将文件中的文本转换为ascii并通过'hashlib'激活它。我只认为这对编码而言不同于单字节。 – 2013-03-10 16:11:23
我做了一些更多的阅读和查看这个问题后:http://stackoverflow.com/questions/2672326/what-does-leading-x-mean-in-a-python-string-xaa我想我可以使用结构模块构建这个任何东西的字节串表示并将它传递给hashlib。纠正我,如果我错了 – Andna 2013-03-10 16:14:27
除非你确定你想要散列的文件中使用多字节字符集,你可以将它传递给散列函数,就像你在C做的那样。 – 2013-03-10 16:16:22