散列鍵時真的需要使用字母b嗎?我只是混淆了它的用法。我可以在不使用b'的情況下使用方法2嗎?我怎樣才能在方法一中插入一個變量?Python:Blake2b的散列鍵中字母'b'的用法是什麼
from hashlib import blake2b
key = 'Hello'
blake2b(b'key').hexdigest()
與
from hashlib import blake2b
key = 'Hello'
blake2b(key).hexdigest()
散列鍵時真的需要使用字母b嗎?我只是混淆了它的用法。我可以在不使用b'的情況下使用方法2嗎?我怎樣才能在方法一中插入一個變量?Python:Blake2b的散列鍵中字母'b'的用法是什麼
from hashlib import blake2b
key = 'Hello'
blake2b(b'key').hexdigest()
與
from hashlib import blake2b
key = 'Hello'
blake2b(key).hexdigest()
b
在字符串的前面代表字節。
你的第一個例子
from hashlib import blake2b
key = 'Hello'
blake2b(b'key').hexdigest()
在這裏,您傳遞字符串'key'
以字節爲blake2b
。這不會插入變量key
的內容。
第二個例子:
from hashlib import blake2b
key = 'Hello'
blake2b(key).hexdigest()
插入可變key
但作爲一個字符串,而不是它的字節表示。
你想要做什麼是
from hashlib import blake2b
key = 'Hello'
blake2b(key.encode()).hexdigest()
最後一行構造使用str.format()
一個字符串,它與format
第一個參數替換{0}
。通過這樣做,您可以在字符串前添加b
。
這意味着它實際上是一個*二進制字符串*:一個字節列表。但是這些字節在這裏由它們的ASCII等價物表示。兩者完全不同。你寫'key'的事實與可能的變量'key'沒有任何關係。 –
Willem Van Onsem那麼,如何在blake2b()函數中插入變量名? – Jom
上面的第二個例子應該按照你的意圖工作。不是嗎? – sma