Node.js加密签名者不会生成签名

时间:2012-10-11 17:53:34

标签: node.js cryptography

我有以下代码:

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”调用总是返回一个空字符串。

我还在两台独立的机器(OSX和Linux)上尝试了所有这些

私钥的格式如下:     -----开始RSA私钥-----          ----- END RSA私钥----- 我知道这是正确的,因为我已成功测试了另一个系统

关于我可能做错的任何想法

2 个答案:

答案 0 :(得分:2)

好的,我找到了答案,所以如果有人在看,我会在这里回答。

似乎证书文件必须 保存 ASCII

即使您将ascii指定为编码,它仍然无效。

我不确定为什么会这样,因为我希望V8将所有字符串规范化为相同的编码(UTF-8?),但显然不是。

答案 1 :(得分:0)

我认为你可以这样做:

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

希望它有效。