x5t JWT 指纹 Python 转换

x5t JWT Thumbprint Python Conversion

我正在尝试为 header 生成一个 x5t 参数,以使用证书向 Azure 发出请求以进行身份​​验证。 在此处文档中给出的示例中:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials,它表示 84E05C1D98BCE3A5421D225B140B36E86A3D5534 的 SHA-1 哈希应该给出 hOBcHZi846VCHSJbFAs26Go9VTQ=

的 x5t 值

当我尝试使用以下方法转换此散列时,我发现 x5t 值为 ODRFMDVDMUQ5OEJDRTNBNTQyMUQyMjVCMTQwQjM2RTg2QTNENTUzNA==

我在转换过程中做错了什么?

import base64
x="84E05C1D98BCE3A5421D225B140B36E86A3D5534"
x5t = base64.b64encode(x.encode()).decode()
print(x)

给定的 SHA-1 哈希

84E05C1D98BCE3A5421D225B140B36E86A3D5534

是一个很长的十六进制数。在您的代码中,您将其视为字符串(例如“84”),但您需要将其解释为字节数组的十六进制表示形式(例如第一个字节为 0x84):

import base64
x = "84E05C1D98BCE3A5421D225B140B36E86A3D5534"
x5t = base64.b64encode(bytearray.fromhex(x))
print(x5t.decode())

结果是:

hOBcHZi846VCHSJbFAs26Go9VTQ=