微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于加密消息的 Python 脚本失败

如何解决用于加密消息的 Python 脚本失败

尝试通过给我的脚本一个密钥和消息来加密到 HMAC-SHA256。

我在网上看到的一个在我的机器上运行失败的流行示例:

import hmac
import hashlib
import binascii

def create_sha256_signature(key,message):
    byte_key = binascii.unhexlify(key)
    message = message.encode()
    enc = hmac.new(byte_key,message,hashlib.sha256).hexdigest().upper()
    print (enc)

create_sha256_signature("KeepMySecret","aaaaa")

为什么我会收到此错误

Traceback (most recent call last):
  File "encryption.py",line 12,in <module>
    create_sha256_signature("SaveMyScret","aaaaa")
  File "encryption.py",line 8,in create_sha256_signature
    byte_key = binascii.unhexlify(key)
binascii.Error: Odd-length string

我应该如何更改我的代码以便我能够提供自己的快捷键?

解决方法

当您调用 unhexlify 时,它意味着您的 key 是字节的十六进制表示。例如。 A73FB0FF...。在这种编码中,每个字符只表示 4 位,因此一个字节需要两个字符,整个输入字符串需要偶数个字符。

来自docs

hexstr 必须包含偶数个十六进制数字

但实际上给定的机密“SaveMySecret”或“KeepMySecret”不仅有奇数个字符,而且甚至不是有效的十六进制代码,因此无论如何它都会失败:

binascii.Error: 发现非十六进制数字

您可以提供十六进制编码形式的密钥,或者使用类似的东西来代替调用 unhexlify

byte_key = key.encode('utf-8')

获取字节作为 hmac.new() 的输入

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。