有人能帮忙吗??我使用以下命令在python中使用jwk生成了一个密钥,并存储在一个可变密钥中
key = jwk.JWK.generate(kty='RSA', size=512)
当我使用key.export((时,它返回了下面的dict
{'d': 'Z1apo6KRMoS0xyqqTu7lEwZ7f_AON_tve42nSUkwXypMF1rDNj_xgIn9J5I4TvAisUaRYq82uZfYf76eMgj8uQ',
'dp': '4k-hSfYmT8H2zdHVFVQpBD-_w5G9ASSADgKn3F08AAs',
'dq': 'E4fXlCY6oT3yPTnOb3LvLxMtKDPmwoI-FLYbNP2L0-k',
'e': 'AQAB',
'kty': 'RSA',
'n': 'wuALgiButVPQy8bCnSkvU-QlBqYB5pk6rfwlcTr-csc8DOvPzekHJYWPjbP_ptAxSW3r5Bnpac1MDgMQKFjOtw',
'p': '8ZI61ugJ3WblKvY-JfkyWXUcdoGAWQB8B9VcfWRvLuM',
'q': 'zoPN8ItkA_0rf_XobRkjhYIdtoXyOLXCqYSU0i8etR0',
'qi': 'JhXuF6EDTrrPysGzsVhco4hpVsSHCXgS7UGZUISc2Ug'}
有人能解释一下这个dict中的键是什么吗?比如d,dp,dq,e,n,p,q,qi
您生成了一个JWK(JSON Web密钥(,一个密钥的特殊表示。在您的情况下,它是一个RSA密钥,其中包含私钥和公钥的参数。
有关通用密钥,请参阅RFC7517,JSON Web密钥(JWK(。例如
- "kty";(键类型(参数
- "孩子;(密钥ID(参数
- "使用";(公钥使用(参数
上述";使用";参数通常具有值"0";sig";(签名(,当密钥用于JWT签名(签名/验证(时。";孩子;有助于找到用于签名验证的匹配密钥。
RFC7518,JSON Web算法(JWA(包含算法特定部分的定义。
n
和e
是公钥的模和指数,所有其他都用于私钥。RFC7518的第6.3节列出了RSA密钥的所有特定条目:
- "n〃;(模量(参数
- "e";(Exponent(参数
- "d";(私有指数(参数
- "p〃;(第一素数(参数
- "q〃;(第二素数(参数
- "dp";(第一因子CRT指数(参数
- "dq";(第二因子CRT指数(参数
- "气;(第一CRT系数(参数