2

私は次のコードを持っています:

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」呼び出しは常に空の文字列を返します。

また、これらすべてを2台の別々のマシン(OSXとLinux)で試しました。

秘密鍵の形式は次のとおりです。-----BEGINRSAPRIVATE KEY ----- ----- END RSA PRIVATE KEY -----そして、別の鍵でのテストに成功したので、それが正しいことを知っています。システム

私が間違っている可能性があることについてのアイデア

4

2 に答える 2

2

OK、答えを見つけたので、誰かが見ている場合に備えて、ここで答えます。

証明書ファイルはASCIIとして保存する必要があるようです。

エンコーディングに ascii を指定しても動作しません。

V8がすべての文字列を同じエンコーディング(UTF-8?)に正規化することを期待しているので、これがなぜなのか正確にはわかりませんが、明らかにそうではありません。

于 2012-10-11T21:11:14.460 に答える
0

I think you can do this:

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

Hope it works.

于 2015-02-13T17:28:53.110 に答える