我正在使用Node.js RSA库(https://github.com/rzcoder/node-rsa)生成包含以下代码的公钥和私钥对:
const key = new nodeRSA();
key.generateKeyPair(2048, 65537);
const pemPublicKey = key.exportKey('pkcs1-public-pem');
const pemPrivateKey = key.exportKey('pkcs1-private-pem');
我得到的关键如下:
-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAnvrbDfGOT9pmKWZafkEizt8WfMbhmf46e7zyHMRQNHTxPKuP89fc\n5BAkhXylC9ozfjTjiQb5wDh1yw5HafyAKE4Jh28fzX1TJnVra1ijpQTte4+v1WVe\na8qxBuzUI6bxJtR/AV1XyfeWbYx27lSenw2ynqiut+oQ5MZ9kOxX4ba+/cWYcvMn\ni0OnhnNIQp0a+cY78sfz/LpDMumWDVZKvOTREg1y9KxGkd/yyYrHyxAAsfijY/47\n70KH0c4FjjYrWipVHAHj/ayhoAFRBFY9uI9pqLamf8AfBsjvIT16/viT4LE6kUEu\nU2zxOUevkjTq3tgOZoFomiSDJC1EopVhvQIDAQAB\n-----END RSA PUBLIC KEY-----
问题是:如何摆脱页眉和页脚以及base64字符串中的\n
?
我想这样做的原因只是因为我想要的关键是与数据库中的内容保持一致
谢谢!
答案 0 :(得分:1)
根据Import/Export documentation,您可以将密钥导出为DER并将结果转换为base64。 (PEM是DER二进制格式转换为base64并添加页眉和页脚)
const derPublicKey = key.exportKey('pkcs1-public-der');
const derPrivateKey = key.exportKey('pkcs1-private-der');
我不熟悉node.js. Converting binary to base64应该看起来像这样
var derB64PublicKey = new Buffer(derPublicKey , 'binary').toString('base64');
var derB64PrivateKey = new Buffer(derPrivateKey , 'binary').toString('base64');
或者,从PEM数据中删除页眉,页脚和\n
会很容易,但导出到DER的选项似乎更合理