2013-03-10 50 views
0

我想用sha1 alghoritm来计算一些数据的校​​验和,事情是在python hashlib输入是以字符串形式给出的。Python - 散列二进制值

是否有可能在python中计算sha1,但以某种方式将原始字节作为输入?

我在问,因为如果我想要计算一个文件的散列,在CI中将使用openssl库并只传递正常字节,但在Python中我需要传递字符串,所以如果我要计算某些特定文件的散列我会在两种语言中得到不同的结果。

+0

那么,你可以将文件中的文本转换为ascii并通过'hashlib'激活它。我只认为这对编码而言不同于单字节。 – 2013-03-10 16:11:23

+0

我做了一些更多的阅读和查看这个问题后:http://stackoverflow.com/questions/2672326/what-does-leading-x-mean-in-a-python-string-xaa我想我可以使用结构模块构建这个任何东西的字节串表示并将它传递给hashlib。纠正我,如果我错了 – Andna 2013-03-10 16:14:27

+0

除非你确定你想要散列的文件中使用多字节字符集,你可以将它传递给散列函数,就像你在C做的那样。 – 2013-03-10 16:16:22

回答

1

在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' 
+0

谢谢,知道这我也可以使用结构模块计算例如4字节整数的散列。 – Andna 2013-03-10 16:21:02

+0

@Andna你可以用你的旧C哈希库来做到这一点。我不确定为什么你会涉及到'struct'模块。你能详细说明吗? – 2013-03-10 21:10:24

+0

你问我想在Python中做什么? – Andna 2013-03-10 23:59:41