Mirth中JWT编解码时RSA私钥生成报invalid key format错误求解
排查方向
- 首先确认密钥格式是否匹配:你的代码使用
PKCS8EncodedKeySpec解析私钥,必须传入PKCS8格式的RSA私钥。jwt.io默认生成的RSA私钥多为PKCS1格式(头尾标记为-----BEGIN RSA PRIVATE KEY-----/-----END RSA PRIVATE KEY-----),和你代码要求的格式不兼容。PKCS8格式的私钥头尾标记为-----BEGIN PRIVATE KEY-----/-----END PRIVATE KEY-----,如果拿到的是PKCS1格式需要先转成PKCS8格式再使用。 - 清理密钥内容冗余字符:解码前必须删除私钥的头尾标记文本,以及内容中所有的换行、空格、制表符等多余字符,仅保留连续的Base64编码内容再传入解码方法。
- 校验Base64编码合法性:检查粘贴的编码内容有没有漏字符、多字符、拼写错误的情况;如果拿到的是URL安全型Base64编码(包含
-、_字符),需要先把-替换为+、_替换为/,并在末尾补全=补齐4的倍数长度后再解码。 - 确认密钥算法匹配:检查jwt.io生成密钥时选择的是否为RSA系列算法(如RS256、RS384、RS512),如果选择的是HS256等对称加密算法,生成的不是RSA密钥,自然无法通过RSA密钥工厂解析。
内容的提问来源于stack exchange,提问作者jc84
相关产品推荐
相关产品推荐

