Node.jsencryption签名者不会生成签名

我有以下代码:

var crypto = require("crypto"); var fs = require("fs"); var path = require("path"); var signer = crypto.createSign("sha1"); signer.update("abc123"); var key = fs.readFileSync(path.join(__dirname,"sign.key"),"utf8"); var sig = signer.sign(key,"hex"); 

我用“sha1”,“sha”,“sha256”(这是我想要的)和“RSA-SHA256”尝试过。 无论我做什么,“signer.sign”调用总是返回一个空string。

我也尝试了所有这些在2个单独的机器(OSX和Linux)

私钥的格式如下:—– BEGIN RSA PRIVATE KEY —– —– END RSA PRIVATE KEY —–我知道这是正确的,因为我已经成功地与另一个系统

任何想法,我可能做错了什么

好的,我find了答案,所以我会在这里回答自己,以防有人看到它。

看起来证书文件必须 保存ASCII

即使你指定ascii作为编码,它仍然不起作用。

我不确定这是为什么,因为我希望V8将所有string归一化为相同的编码(UTF-8?),但显然不是。

我认为你可以做到这一点:

 var key = fs.readFileSync(path.join(__dirname,"sign.key"),"binary"); 

希望它的作品。