[英]RSA signature in JavaScript
我是加密新手。 我想先使用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的一部分
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)
但是,變量名令人困惑。 result
var實際上是簽名。
signString
函數使用的是PCSK#1 v1.5填充,因此您無需將摘要算法傳遞給verify函數。 此信息已經存在於簽名中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.