我有以下代码:
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私钥----- 我知道这是正确的,因为我已成功测试了另一个系统
关于我可能做错的任何想法
答案 0 :(得分:2)
好的,我找到了答案,所以如果有人在看,我会在这里回答。
似乎证书文件必须 保存 ASCII 。
即使您将ascii指定为编码,它仍然无效。
我不确定为什么会这样,因为我希望V8将所有字符串规范化为相同的编码(UTF-8?),但显然不是。
答案 1 :(得分:0)
我认为你可以这样做:
var key = fs.readFileSync(path.join(__dirname,"sign.key"),"binary");
希望它有效。