JavaScript/ReactJS环境使用公钥做RSA加密,NodeRSA导入公钥报错如何解决
问题原因
- 导入格式参数错误:
pkcs8是私钥存储格式,你持有的-----BEGIN PUBLIC KEY-----开头的公钥为SPKI格式,不能用pkcs8参数导入。 - 公钥字符串可能存在多余前后空格、换行符等空白字符,导致ASN.1解析失败。
修复代码
import NodeRSA from 'node-rsa'; const key = new NodeRSA(); let keyData = `-----BEGIN PUBLIC KEY-----MIIBCgKCAQEAzK1MF/...-----END PUBLIC KEY-----` // 先清洗公钥字符串,去除所有多余空白字符 const cleanedKey = keyData.replace(/\s/g, ''); // 用public格式导入SPKI标准公钥 key.importKey(cleanedKey, 'public'); // 短消息加密示例,输出base64格式加密结果 const plainText = '待加密的短消息'; const encryptedResult = key.encrypt(plainText, 'base64'); console.log(encryptedResult);
补充排查点
如果按上述代码仍导入失败,请检查公钥完整性:
- 首尾
-----BEGIN PUBLIC KEY-----、-----END PUBLIC KEY-----标记是否完整 - 中间的base64编码内容没有缺失、乱码、多余特殊字符
内容的提问来源于stack exchange,提问作者kamikazzi
相关产品推荐
相关产品推荐

