2

私は暗号化が初めてです。サーバーに送信する前に、JavaScript RSA ライブラリを使用してデータに署名したいと考えています。

JavaScript ライブラリ jsrsasign: http://kjur.github.io/jsrsasign/を使用してデータに署名しようとしています。

モジュラス (n)、公開指数 (e)、および非公開指数 (d) を生成し、データに署名しようとしました。

var privateExponent = "4B48F60D02460811DABF74D79770E8DD72B5EEFF1324F651D4543D98B8C9F0F7ED3E245C49D967A30B279564AFF4FE53E2D92704FB4D6E923732F4AF8CFDA2114A49B6E425FD44AEACB80F00125AF6468F1A666EDDD5CFD6BFAB27950EF3DFB78671734BF1BB782CBB654A7FBB9BFB897E37F0324710360E1515B1FF0EE7FAF1";

var modulus = "00A68A945DE1175E4EBA23C53B8A1237CE9AA292020ECB373D90837FBD8DB8164687B7913543EA838E2B669BD1626FA9872397C5398485D951CFC229E102A78654B61E9EB2BC3B36BD2624ACF5C8B82ABD33A5AF4144C55034A3E5BF8282F3D5CB0CF9F550844E68A58DADC3BCC7CF726F227F8EC5FAC2494F1FBDEEF39212B5FF";

var publicExponent = "10001";

次のように、それらを使用してデータの一部に署名しようとしています。

var signature = "Hello world";
var rsa = new RSAKey();
rsa.setPrivate(modulus, publicExponent, privateExponent);

var result = rsa.signString(signature, 'sha256');
rsa.setPublic(modulus, publicExponent);

console.log(result);
console.log(rsa.verifyString(result, 'sha256'));

ただし、verify 関数は常に false を返します。何が間違っているのかわかりません。

関数 setPublic と setPrivate は rsa2.js の一部です

4

1 に答える 1

1

呼び出しにエラーがありverifyStringます。API は次のように述べています。

verifyString(sMsg, hSig)
  verifies a sigature for a message string with RSA public key.
  Parameters:
    {String} sMsg
        message string to be verified.
    {String} hSig
        hexadecimal string of siganture.
        non-hexadecimal charactors including new lines will be ignored.

    Returns:
        returns 1 if valid, otherwise 0

呼び出す必要があるコードは次のとおりです。

rsa.verifyString(signature, result)

ただし、変数名は紛らわしいです。resultvar は実際には署名です。

signString関数は PCSK#1 v1.5 パディングを使用しているため、ダイジェスト アルゴリズムを検証関数に渡す必要はありません。この情報はすでに署名に含まれています。

于 2013-10-29T10:33:01.470 に答える