从模数和指数生成公钥再次

问题描述

我知道 SO 上已经有了答案,但是在尝试了其中的几个 (ex1,ex2) 之后,我仍然无法根据模数和指数生成正确的公钥。

这是我的python3代码:

from Crypto.PublicKey.RSA import construct
import urllib.parse
import base64
import re

def decode_base64(data,altchars=b'+/'):
    """Decode base64,padding being optional.

    :param data: Base64 data as an ASCII byte string
    :returns: The decoded byte string.

    """
    data = re.sub(rb'[^a-zA-Z0-9%s]+' % altchars,b'',data)  # normalize
    missing_padding = len(data) % 4
    if missing_padding:
        data += b'='* (4 - missing_padding)
    return base64.b64decode(data,altchars)

e = int.from_bytes(decode_base64(b'AQAB'),'big',signed=False)
decoded = decode_base64(b'tVKUtcx_n9rt5afY_2WFNvU6PlFMggCatsZ3l4RjKxH0jgdLq6CScb0P3ZGXYbPzXvmmLiWZizpb-h0qup5jznOvOr-Dhw9908584BSgC83YacjWNqEK3urxhyE2jWjwRm2N95WGgb5mzE5XmZIvkvyXnn7X8dvgFPF5QwIngGsDG8LyHuJWlaDhr_EPLMW4wHvH0zZCuRMARIJmmqiMy3VD4ftq4nS5s8vJL0pVSrkuNojtokp84AtkADCDU_BUhrc2sIgfnvZ03koCQRoZmWiHu86SuJZYkDFstVTVSR0hiXudFlfQ2rOhPlpObmku68lXw-7V-P7jwrQRFfQVXw','big')

n = int.from_bytes(decoded,signed=False)

rsaKey = construct((n,e))                                                                                      
pubKey = rsaKey.exportKey()                                                                                            
print(pubKey.decode('ascii'))

但是每当我尝试验证 jwt 令牌时,我都会收到“signature_invalid”错误。

我是否没有正确解码二进制编码的字节?

----更新--- 正如评论中所建议的,我已经更新了我的代码以首先对字节进行 url 解码,但我仍然收到与以前相同的签名无效错误。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...