从公钥获取可读格式

问题描述

我已将公钥转换为可红色格式。

我有这个公钥

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3qRkBn/pouirEVL/H+at
FLbB1Wmm41Y/4REbuNwMkPNGHhTwVNF4mSvUFdK6L0SYZ8f8B1oe6YzfZ+bWBAde
oiupY6ABHJ8xGkb14RBwFm152kUT29jXXKU9N8aKGsWayOO7ZLIMOnFrWrjIrrLa
NSkKfuCxywOInjcpkuaq/c+cdxKIDTw1QsUrz3rN1s/TJsvfY+oeFtzCh1auE2dQ
dVPxSeK1ApMsXsXfUP85UNloglruSrf2IyxK33trNGigH2qD/1PHcjft8PiG00gD
9R2DR0bBASpz/CYKEm6Ry37lVJif0OtQKnyVTap4yLuWaMlZiFaSfBh0FlueHLxN
QwIDAQAB
-----END PUBLIC KEY-----

我想像这样从这个公钥中提取 JWK

{
  "kty": "RSA","n": "3FCW9xBBsviZUQnDlcZczC_GO0J0Vhzx1VUj_JyM8hTBzJ_--1GHH5k60OHz169jEHgJ9kkwIKP0ld8Ah5-6x1z5a_Vh-uFizbPn45MgUjwuEL2VPeZsn_wPb2t-A6otOR5zUNU_n4xXcjqZETpvEjFQFQ2n_SDujZUMtQfda9f_pltaekqws4iWIr2sA4QNXXSvv6JvWmjp49N6AQexrVRW9XFBkEFpqofwdWkJMU9TJThzzZB--GA8f4CHfD_DsX_aOsM1u1oCmjWiKmz793NhDQChY0LApEjosTm9a0kQuYEEfGrLNiLfplIsXq6Qw4lFCiWDv553J4_nJusAsw","e": "AQAB","alg": "RS256","use": "sig"
}

如何使用终端或任何其他工具隐藏此公钥并获取 JWK。

解决方法

可以使用authlib库+python3 https://authlib.org/

from authlib.jose import jwk
rsa_key={
    'public_key':'-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3qRkBn/pouirEVL/H+at\nFLbB1Wmm41Y/4REbuNwMkPNGHhTwVNF4mSvUFdK6L0SYZ8f8B1oe6YzfZ+bWBAde\noiupY6ABHJ8xGkb14RBwFm152kUT29jXXKU9N8aKGsWayOO7ZLIMOnFrWrjIrrLa\nNSkKfuCxywOInjcpkuaq/c+cdxKIDTw1QsUrz3rN1s/TJsvfY+oeFtzCh1auE2dQ\ndVPxSeK1ApMsXsXfUP85UNloGlruSrf2IyxK33trNGigH2qD/1PHcjft8PiG00gD\n9R2DR0bBASpz/CYKEm6Ry37lVJif0OtQKnyVTap4yLuWaMlZiFaSfBh0FlueHLxN\nQwIDAQAB\n-----END PUBLIC KEY-----'
}
print(jwk.dumps(rsa_key['public_key'],kty='RSA'))

注意键的每一行末尾都有一个 \n

,

如果您使用的是 C#,那么以下 here 解决方案可能对您有所帮助。