4

我正在尝试用 python 编码一个 JWT,我需要用 base64 编码它,我做了。然后我必须在发送到服务器之前用私钥对其进行签名。其实我被屏蔽了,什么时候签不知道怎么签,从昨天开始就在网上搜索,有点迷茫。这是我的代码。

import jwt

print ("\nStart..")

encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')

print("\nJWT : ",encoded)

try:
    decoded = jwt.decode(encoded, 'secret', algorithms=['HS256'])
except jwt.InvalidTokenError:
    print("Invalid token!!")

print("\ndecoded : ", decoded)

print("\nencodage : ")

#LOAD THE PRIVATE KEY


#SIGN THE ENCODED token

还有我的密钥格式,它是一个 RSA 私钥。

-----BEGIN RSA PRIVATE KEY-----
dsjkfhsdfkshkdfhks...
-----END RSA PRIVATE KEY-----

我给服务器crt.crt一个证书,我想我需要用我的私钥加密,然后他们将能够使用证书中的密钥解密消息,这就是我所理解的。

在此先感谢 G. B

4

3 回答 3

1

您可以尝试参考:

from Crypto.PublicKey import RSA
from Crypto.Cipher import HS256

def encrypt_text(input_text):
   utf8_text = input_text.encode('utf-8')
   pub_key = RSA.importKey(open(settings.RSA).read())
   cipher = HS256.new(public_key)
   cipher_text = base64.encodebytes(cipher.encrypt(utf8_text))
   return cipher_text.decode('utf-8')

创建公钥和私钥:

ssh-keygen -t rsa -C "your_email@example.com"

希望有帮助

于 2017-07-25T09:31:53.017 回答
0

根据JWT RFC,RSA + SHA256 的算法类型是“RS256”,但您使用的是“HS256”

于 2018-09-13T20:47:02.720 回答
0

看看:PyJWT

PyJWT 是一个 Python 库,它允许您对 JSON Web 令牌 (JWT) 进行编码和解码。JWT 是一种开放的行业标准 (RFC 7519),用于在两方之间安全地表示声明

它支持多种加密签名链接算法

您不需要对您的秘密/密钥进行编码

您将有效负载作为 JSON 对象提供

它使用适当的“。” 句法

于 2021-10-22T12:41:19.077 回答