繁体   English   中英

Python 脚本加密消息失败

[英]Python script to encrypt a message fails

尝试通过给我的脚本一个密钥和消息来加密到 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 位,因此一个字节需要两个字符,整个输入字符串需要偶数个字符。

文档

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

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

binascii.Error:找到非十六进制数字

您可以提供十六进制编码形式的密钥,也可以使用类似的东西而不是调用unhexlify

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM