1

我使用客户端的 Python 请求模块功能和服务器端的 Flask 服务器在两个节点之间发送 Json 格式的数据。我需要使用 RSA 私钥对 Python 2.7 字符串“某个字符串”进行数字签名,并验证服务器端的签名。为此,我选择了 Pycryptodome 模块。不幸的是, json.dumps() [来自 Json Python 模块] 要求将字符串的签名哈希从 Pycryptodome 的“pss”签名函数输出的形式(字节字符串)转换为 unicode 字符串——json 需要 unicode: 如何在 JSON 中编码字节?json.dumps() 抛出 TypeError

我正在使用 base 64 模块的 base64.b64encode() 函数将数字签名转换为 json.dumps() 可以处理的形式——在 jsonoficatoin 之前将签名与其他一些东西一起放入 python 字典中——并解码使用 base64.b64decode 的服务器端,希望取回可由 Pycryptodome 的 verify() 函数处理的字节字符串。

# client
hash = SHA256.new(some_string)
sig = pss.new(PrivKey).sign(hash)
finicky_Json = base64.b64encode(sig)

...

# server
hash = SHA256.new(some_string)
back_to_normal_sig = base64.b64decode(finicky_Json)
public_key_object = pss.new(PubKey)
public_key_object.verify(hash, back_to_normal_sig)`

不幸的是,我遇到了类型错误:

raise TypeError("Object type %s cannot be passed to C code" % type(data)) TypeError: Object type <type 'unicode'> cannot be passed to C code 我错过了什么?谢谢你

4

1 回答 1

0

如果您传递的内容是 ASCII(应该是),您可以使用str().

于 2020-02-17T19:02:08.003 回答