我想在python中为同一个字符串设置一个唯一的哈希值。我使用以下代码获取哈希:
import hashlib
mysha1 = hashlib.sha1()
mysha1.update("my_url")
print mysha1.hexdigest()
mysha1.update("my_url")
print mysha1.hexdigest() # which is generating a different hash
我在这里错过了什么?
答案 0 :(得分:6)
update()
函数提供要连接的字符串。
https://docs.python.org/2/library/hashlib.html
>>> import hashlib
>>> mysha1 = hashlib.sha1()
>>> mysha1.update("my_url")
>>> print mysha1.hexdigest()
ebde90b9f0c047ff9f86bec3b71afe5d00594030
>>> mysha1.update("my_url")
>>> print mysha1.hexdigest()
efa6ba48cedd0da886a553ad0e7c131ec79b452e
>>>
>>>
>>> sha = hashlib.sha1()
>>> sha.update("my_urlmy_url")
>>> print sha.hexdigest()
efa6ba48cedd0da886a553ad0e7c131ec79b452e
答案 1 :(得分:4)
当您致电update("my_url")
时,您将concatenating该字符串添加到哈希输入中。
现在可以使用update()方法使用任意字符串提供此对象。在任何时候你都可以使用digest()或hexdigest()方法向它索取到目前为止连接到它的字符串串联的摘要。
每次需要新哈希时,都需要创建一个新的sha1
对象。
答案 2 :(得分:1)
不要多次拨打import base64
from PIL import Image
import cv2
from StringIO import StringIO
import numpy as np
def readb64(base64_string):
sbuf = StringIO()
sbuf.write(base64.b64decode(base64_string))
pimg = Image.open(sbuf)
return cv2.cvtColor(np.array(pimg), cv2.COLOR_RGB2BGR)
cvimg = readb64('R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7')
cv2.imshow(cvimg)
,例如:
update
答案 3 :(得分:0)
最安全的方式:
import hashlib
print(hashlib.sha1(str("my_url").encode('utf-8')).hexdigest())