Skip to main content
 首页 » 编程设计

python之base64编码时属性错误

2025年05月04日2198°冷暖

我有两个使用 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