Python3和hmac。如何处理不是二进制的字符串

拉奎尔·卡拉蒂诺:

我在Python2中有个运行良好的脚本。

def _generate_signature(data):
   return hmac.new('key', data, hashlib.sha256).hexdigest()

数据是的输出json.dumps

现在,如果我尝试在Python 3中运行相同类型的代码,则会得到以下信息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/hmac.py", line 144, in new
    return HMAC(key, msg, digestmod)
  File "/usr/lib/python3.4/hmac.py", line 42, in __init__
    raise TypeError("key: expected bytes or bytearray, but got %r" %type(key).__name__)
TypeError: key: expected bytes or bytearray, but got 'str'

如果我尝试将密钥转换为字节这样的操作:

bytes('key')

我懂了

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding

我仍在努力理解Python 3中的编码。

错误:

您可以使用字节字面量: b'key'

def _generate_signature(data):
    return hmac.new(b'key', data, hashlib.sha256).hexdigest()

除此之外,请确保data也是字节。例如,如果从文件中读取文件,则在打开文件时需要使用binary模式(rb)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

允许 Python3 二进制字符串中的空字节

如何在Python3中将“二进制字符串”转换为普通字符串?

python如何区分字符串和二进制消息——TCP Socket发送

Elixir-处理二进制,字符串和字符列表(项目Euler 8)

如何处理Python和PostgreSQL之间的二进制数据?

二进制和 Unicode 字符串

如何拆分(以特定的二进制值包含二进制的字符串?

Python 将二进制字符串转换为二进制整数

如何使用f“”字符串而不是.format()打印二进制数字?

二进制字符串余数3

如何从二进制字符串创建PDF?

二进制字符串的递归问题(Python)

Python:从二进制转换为字符串

Python中字符串的二进制移位

读取二进制字符串,用作二进制字符串python

如何在Python 3中将二进制字符串转换为类似字节的对象?

如何以1和0的字符串序列读取二进制文件?

如何比较PHP中的IP地址和二进制字符串?

将 0 和 1 的字符串转换为它的二进制等效 python

Python二进制和常规字符串混淆

二进制到字符串/字符串到二进制

如何在Python中将大负数打包为二进制字符串

如何在python中将字符串转换为填充二进制文件?

如何在 python 中解码这个二进制字符串?

如何在 Python 中读取二进制字符串

如何将二进制转换为字符串python?

如何在Python中将字符串转换为二进制格式

如何从Java中的标准输入读取python二进制字符串

如何在python中将二进制字符串转换为双极性表示?