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");
希望它的作品。