我有两个使用 curve25519 生成的 key ( secret key 和公共(public) key )。我想使用 base64.safe_b64encode 对这两个 key 进行编码,但我一直收到错误消息。有什么方法可以使用它进行编码吗?
这是我的代码:
import libnacl.public
import libnacl.secret
import libnacl.utils
from tinydb import TinyDB
from hashlib import sha256
import json
import base64
pikeys = libnacl.public.SecretKey()
piprivkey = pikeys.sk
pipubkey = pikeys.pk
piprivkey = base64.safe_b64encode(piprivkey)
pipubkey = base64.safe_b64encode(pipubkey)
print("encoded priv", piprivkey)
print("encoded pub", pipubkey)
这是我得到的错误:
Traceback (most recent call last):
File "/home/pi/Desktop/finalcode/pillar1.py", line 130, in <module>
File "/home/pi/Desktop/finalcode/pillar1.py", line 50, in generatepillar1key
piprivkey = base64.safe_b64encode(piprivkey)
AttributeError: 'module' object has no attribute 'safe_b64encode'
请您参考如下方法:
出现此错误的原因是 base64 库没有名为 safe_base64encode 的函数。 safe_base64encode 是什么意思?为什么要用 base64 对两个 key 进行编码?有urlsafe编码函数,也有常规base64编码函数。
encoded_data = base64.b64encode(data_to_encode)
或
encoded_data = base64.urlsafe_b64encode(data_to_encode)
后者只是有一个不同的字母表,- 而不是 + 和 _ 而不是 /所以它是 urlsafe。我不确定您想做什么,但请参阅文档 here
