【发布时间】:2020-03-03 12:36:04
【问题描述】:
我正在生成一个 SAML 响应,它需要使用公钥和私钥进行加密和签名。我使用命令在终端中生成了private.pem 和public.pem
openssl genrsa -out private.pem 2048
openssl rsa -in ./private.pem -pubout -out public.pem
然后在 nodeJS 中。
encrypt: function(message) {
return new Promise(function (resolve, reject) {
var publicKey = require("fs").readFileSync(__dirname + "/public.pem", "utf8");
var encrypted = require("crypto").publicEncrypt(publicKey, new Buffer(message));
resolve(encrypted.toString("base64"));
});
},
一旦我调用消息encrypt(xml),我就会收到以下错误
{
library: 'rsa routines',
function: 'RSA_padding_add_PKCS1_OAEP_mgf1',
reason: 'data too large for key size',
code: 'ERR_OSSL_RSA_DATA_TOO_LARGE_FOR_KEY_SIZE'
}
目标:
我必须按照此处的演示 samltools.com 签署消息(模式:SignMessage),我的 SAML 消息看起来像 this。 (参见 SAML 响应部分)。
- 签署消息
- Base64Encode 消息
【问题讨论】:
-
你想做什么还不清楚。您的演示链接仅谈论签名,而不是加密。然而,您将“加密消息”作为您的首要目标。
-
对不起,给消息签名,现在我了解了更多,它正在签名,我将删除加密部分
标签: node.js cryptography saml