gpt4 book ai didi

python - 使用 Python 从 Azure Key Vault 解码 JsonWebKey

转载 作者:行者123 更新时间:2023-12-03 02:53:00 24 4
gpt4 key购买 nike

我有一个 python 脚本,可以从 Azure Key Vault 检索 RSA 私钥。尝试序列化键值会给出:

ValueError: Could not deserialize key data.

key_bytes 看起来像“b'\xb8w\xb7\xce{s\xf7\xa0\xce\xba\xf5#\x07\x8b?\x1d\xc9m...”

代码:

from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.asymmetric import dsa
from cryptography.hazmat.primitives import serialization

subscription_id = "xxx"
VAULT_URL = "xxx"
KEY_ID = "xxx"
KEY_VERSION = "xxx"

credentials = ServicePrincipalCredentials(
client_id = 'xxx',
secret = 'xxx',
tenant = 'xxx'
)

client = KeyVaultClient(credentials)

key_bundle = client.get_key(VAULT_URL,
KEY_ID,
KEY_VERSION)

key_bytes = key_bundle.key.n

p_key = serialization.load_pem_private_key(
key_bytes,
password='xxx',
backend=default_backend()
)

通过从 Blob 存储中以 .p8 格式加载 key ,上述 key 序列化可以发挥作用。 Key Vault 要求 key 以 pem 格式保存。

我尝试了不同的解码等,但在解码字节方面没有成功。任何解决此问题的帮助或提示将不胜感激。

最佳答案

注意我正在使用 jwcrypto。

不确定这是否相关,但过去几天我一直在与 JWK 作斗争。对我有帮助的一件事是 Base64 编码和解码 e 和 n( key 的指数和模数): base64.urlsafe_b64encode(n).decode()它的作用是获取 ASCII 编码的(我相信)字节 n 值 (b'...') 并返回 base64 编码的字节,然后解码为字符串,因为这就是我的输入所需的内容。

  • 初始 n 值:b'\xd4b\xd3/"Vi\x8b\xce\xaf...\xf1\xec\xcd
  • base64 编码:b'1GLTLyJWaYvOrwdje1O3...OvHszQ==
  • 解码:'1GLTLyJWaYvOrwdje1O3...OvHszQ== (请注意末尾的“==”,这是您希望在私钥末尾看到的内容)

同样,不确定这是否有帮助。

This给出了一些参数的上下文以及我对 this 的理解文章中,您实际上无法从 Key Vault 中获取私钥,而只能获取公钥。

关于python - 使用 Python 从 Azure Key Vault 解码 JsonWebKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com