Python 如何使用公共证书(.pem)作为密钥计算文本的HMAC(hsa256)

Python 如何使用公共证书(.pem)作为密钥计算文本的HMAC(hsa256),python,jwt,hmac,Python,Jwt,Hmac,我正在研究Json Web令牌,并希望使用python复制它,但我正在努力研究如何使用公共证书(pem文件)作为密钥来计算文本的HMAC_SHA256。 有人知道我怎样才能做到吗 Tks好的,我是在22个小时的学习/google之后得到这个的 扰流板警报 因为这是pentesterlab的专业练习之一,所以我不会发布演示如何使用HSA256生成完整JWT的代码。 相反,如果我发布如何使用python中的pem文件计算HSA256会更好,因为这是我最初的问题: import hashlib im

我正在研究Json Web令牌,并希望使用python复制它,但我正在努力研究如何使用公共证书(pem文件)作为密钥来计算文本的HMAC_SHA256。
有人知道我怎样才能做到吗


Tks

好的,我是在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密钥。

好的,我是在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密钥。

如果有人发现此问题。主持人提供的答案是可行的,但想法是错误的。HMAC方法不使用任何RSA密钥。RSA密钥对(公共和私有)用于非对称算法,而HMAC是对称算法


在HMAC中,通信双方保留与密钥相同的秘密文本(字节)。只要你保密,它可以是一个
公共证书.pem
。但是,
public.pem
通常是公开共享的,这使得它不安全。

如果有人发现这个问题。主持人提供的答案是可行的,但想法是错误的。HMAC方法不使用任何RSA密钥。RSA密钥对(公共和私有)用于非对称算法,而HMAC是对称算法


在HMAC中,通信双方保留与密钥相同的秘密文本(字节)。只要你保密,它可以是一个
公共证书.pem
。但是
public.pem
通常是公开共享的,这使得它不安全。

请回答您的问题,并包括您目前使用的代码。它在哪里失败?如何?请回答您的问题,并包括您目前使用的代码。它在哪里失败?我想补充一点,上面的代码在Python3中不起作用。它需要是:
signature=hmac.new(key.encode(),unsignedToken,digestmod=hashlib.sha256)。digest()
也是PentesterLab练习的一个技巧:下载并保存公钥pem文件,而不是复制粘贴它。:-)我想补充一点,上面的代码在Python3中不起作用。它需要是:
signature=hmac.new(key.encode(),unsignedToken,digestmod=hashlib.sha256)。digest()
也是PentesterLab练习的一个技巧:下载并保存公钥pem文件,而不是复制粘贴它。:-)是的,这个想法是错误的和不安全的。我会说根本没有安全感。但这就是PTL练习的全部要点:)HMAC中使用的密钥在定义上是对称的。是的,这个想法是错误的和不安全的。我会说根本没有安全感。但这就是PTL练习的全部要点,它表明:)HMAC中使用的密钥定义上是对称的。