Python:字母';b';使用Blake2b对密钥进行散列
在散列密钥时是否真的需要使用字母b?我只是对它的用法感到困惑。我可以不使用b'而使用方法2吗?如何在方法一中插入变量Python:字母';b';使用Blake2b对密钥进行散列,python,Python,在散列密钥时是否真的需要使用字母b?我只是对它的用法感到困惑。我可以不使用b'而使用方法2吗?如何在方法一中插入变量 from hashlib import blake2b key = 'Hello' blake2b(b'key').hexdigest() 对 字符串前面的b表示字节 你的第一个例子 from hashlib import blake2b key = 'Hello' blake2b(b'key').hexdigest() 在这里,您将字符串'key'作为字节传递到bla
from hashlib import blake2b
key = 'Hello'
blake2b(b'key').hexdigest()
对
字符串前面的
b
表示字节
from hashlib import blake2b
key = 'Hello'
blake2b(b'key').hexdigest()
在这里,您将字符串'key'
作为字节传递到blake2b
中。这不会插入变量键的内容
from hashlib import blake2b
key = 'Hello'
blake2b(key).hexdigest()
插入变量键
,但作为字符串而不是其字节表示形式from hashlib import blake2b
key = 'Hello'
blake2b(key.encode()).hexdigest()
最后一行使用
str.format()
构造一个字符串,它用format
的第一个参数替换{0}
。通过这样做,您可以在字符串前面添加b
。这意味着它实际上是一个二进制字符串:一个字节列表。但是字节在这里是由它们的ASCII等价物表示的。两者完全不同。编写key
与可能的变量key
无关。Willem Van Onsem那么如何在blake2b()函数中插入变量名呢?上面的第二个示例应该按照您的预期工作。不是吗?如果您使用的是Python 2,b'foo'
与'foo'
相同。这里可能不需要字符串插值key=b'Hello'
也可以。这是真的,但如果字符串来自其他源,比如说key=input()
,则无法执行此操作。ByTestRing没有格式
方法。您可以使用encode
将str
转换为bytes
。同样,如果键不是按原样键入的,而是从其他来源获取的,该怎么办?上面的示例已经过编辑和测试。。。
from hashlib import blake2b
key = 'Hello'
blake2b(key.encode()).hexdigest()