使用JavaScript生成RSA-SHA1签名

前端之家收集整理的这篇文章主要介绍了使用JavaScript生成RSA-SHA1签名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想用RSA-Sign JavaScript Library生成RSA-SHA1签名.具体来说,我想用它来签署OAuth请求.

但是,JavaScript库生成的签名看起来与我可以生成的签名不同,例如同

$echo -n "x" | openssl dgst -sha1 -sign priv.key -binary | openssl base64 | xargs echo -n
eV0ZrD7ZrTsuzHHYSwLfUJhXuM96D6ZyIzD5FFphzHbKRaO4TMeTR7bJjkuPib+l
EccM7t6YNDvRgOHyXJDVZZQTg5G4D4jnGVmOgeuti1etCCpLsb1Rl3sfJF/rIlgA
AmejvBbrEG+n8L+GeD6Vd3cneW7k2Rksnh+/BWnnR3c=

相反:这是库生成的(base64编码):

Nzk1ZDE5YWMzZWQ5YWQzYjJlY2M3MWQ4NGIwMmRmNTA5ODU3YjhjZjdhMGZhNjcy
MjMzMGY5MTQ1YTYxY2M3Ng0KY2E0NWEzYjg0Y2M3OTM0N2I2Yzk4ZTRiOGY4OWJm
YTUxMWM3MGNlZWRlOTgzNDNiZDE4MGUxZjI1YzkwZDU2NQ0KOTQxMzgzOTFiODBm
ODhlNzE5NTk4ZTgxZWJhZDhiNTdhZDA4MmE0YmIxYmQ1MTk3N2IxZjI0NWZlYjIy
NTgwMA0KMDI2N2EzYmMxNmViMTA2ZmE3ZjBiZjg2NzgzZTk1Nzc3NzI3Nzk2ZWU0
ZDkxOTJjOWUxZmJmMDU2OWU3NDc3Nw==

(当然,假设输入和键相同)

是否可能是因为使用了SHA1实现?在那种情况下,我可以尝试使用另一个.

我不是加密专家,但是OAuth RFC 5849是saying,需要使用RSASSA-PKCS1-V1_5-SIGN,这似乎是库的情况.

非常感谢你.

最佳答案
我尝试了上面提到的openssl命令和JS库,结果是一致的.我从两个方面得到的签名都是一样的.

我从你的帖子中注意到的一件事是,从库中生成的base64编码结果太长并且看起来不对.您是否可能不对base64编码二进制签名?

您可以尝试使用此代码获取签名的base64编码字符串吗?

function doSign() {
  var rsa = new RSAKey();
  rsa.readPrivateKeyFromPEMString(document.form1.prvkey1.value); //replace with your private key
  var hSig = rsa.signString("x","sha1");
  var base64_encoded_signature = hex2b64(hSig);
}

如果将“base64_encoded_signature”的值与openssl命令的值进行比较,则它们应该相同.

原文链接:https://www.f2er.com/js/429517.html

猜你在找的JavaScript相关文章