我正在研究Json Web Tokens并希望使用python重现它,但我正在努力研究如何使用公共证书(pem文件)作为密钥来计算文本的HMAC_SHA256。登记/> 有谁知道我怎么能做到这一点!?
韩国社交协会
答案 0 :(得分:1)
好的,经过22个小时的学习/ google后我得到了这个。
扰流警报
由于这是pentesterlab的专业练习之一,我不会发布代码演示如何使用HSA256生成完整的JWT。 相反,如果我发布如何使用python中的pem文件计算HSA256会更好,因为这是我原来的问题:
import hashlib
import hmac
key = open("public_cert.pem","r").read()
signature = hmac.new(key, unsignedToken, digestmod=hashlib.sha256).digest()
print signature
基本上我们只需要读取公钥文件并使用hmac.new(..)函数,将hashlib.sha256设置为要使用的摘要。 “unsignedToken”是我们想要计算签名的JWT文本(或声明)。
对于那些仍在试图弄清楚如何为pentesterlab的练习创建有效的JWT的人,我能给出的唯一提示是urlsafe-base64编码所有内容。 还有一个名为“pyjwt”的python模块可以使用,但必须编辑其源代码以允许公钥用作HMAC密钥。
答案 1 :(得分:0)
如果有人发现此问题。主持人提供的答案有效,但是这个想法是错误的。您不要将任何RSA密钥与HMAC方法一起使用。 RSA密钥对(公共和私有)用于非对称算法,而HMAC是对称算法。
在HMAC中,通信的两侧与密钥保留相同的秘密文本(字节)。只要您将其秘密保存,它就可以是public_cert.pem
。但是public.pem
通常是公开共享的,因此不安全。