繁体   English   中英

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

[英]How to calculate the HMAC(hsa256) of a text using a public certificate (.pem) as key

我正在研究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密钥。

万一有人发现这个问题。 主持人提供的答案有效,但是这个想法是错误的。 您不要将任何RSA密钥与HMAC方法一起使用。 RSA密钥对(公共和私有)用于非对称算法,而HMAC是对称算法。

在HMAC中,通信的两侧与密钥保留相同的秘密文本(字节)。 只要您将其秘密保存,它就可以是public_cert.pem 但是public.pem通常是公共共享的,这使其不安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM