gpt4 book ai didi

javascript - 如何使用 jsrsasign 获取证书来验证我的 RSA 数字签名?

转载 作者:行者123 更新时间:2023-11-29 10:44:20 29 4
gpt4 key购买 nike

我正在使用 jsrsasign 并且我有一个之前生成的 RSA 公钥和私钥。我使用以下代码生成签名。

var key = new RSAKey();
key.readPrivateKeyFromPEMString($("#private")[0].value); // "private" is a textarea containing the PEM encoded private key.
var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa"});
sig.initSign(key);
sig.updateString('message');
var sigValueHex = sig.sign();

这产生了预期的十六进制签名。 jsrsasign 的文档提供了以下代码来验证签名。

var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa"});
sig.initVerifyByCertificatePEM("-----BEGIN CERTIFICATE-----(snip)");
sig.updateString('message');
var isValid = sig.verify(sigValueHex);

我的问题是我没有可用来验证的证书。 sig.sign() 只给出签名,不给出证书。还有 sig.initVerifyByPublicKey(RSAKey) 一开始看起来很有希望。但是,RSAKey 只能获取私钥,没有公钥。

那么,我的问题是如何获得此证书?如果我做不到,我如何从我的公钥 key 中获取 RSAKey 对象?如果我做不到,是否有更好的方法来使用 javascript 进行数字签名?

我正在使用 jsrsasign 和 jQuery。 http://kjur.github.io/jsrsasign/

如果我使用的方法无法做到这一点,是否有更好的方法?我的主要目标是能够向服务器发送消息并确保消息未被篡改并且来自正确的位置。 SSL 不是这里的选项。消息不需要加密,只需要保护。

最佳答案

您可以使用 KEYUTIL.getKey(param) 创建公钥,其中“param”可以是包含您的证书或公钥的字符串。 Here are the docs for that method

示例:

    var publicKey = KEYUTIL.getKey(publicKeyString);
var sig = new r.Signature({"alg": "SHA256withRSA", "prov": "cryptojs/jsrsa"});
sig.initVerifyByPublicKey(publicKey);
sig.updateString(message);
var isValid = sig.verify(signature);

希望对您有所帮助。

关于javascript - 如何使用 jsrsasign 获取证书来验证我的 RSA 数字签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468958/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com