- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
早上好。 我需要在移动设备上生成一个证书,以便稍后发送到服务器。 目的是签署设备的一些独特功能并在服务器上进行检查。 我用的是下面的方法 // Create cert var publickey=""
我正在使用 jsrsasign 创建 JWT。按照教程 here,我做了以下事情: // Header var oHeader = {alg: 'RS256', typ: 'JWT'}; // Pay
我有一个 html 文件来使用 jsrsasign 库测试签名和验证。我使用 2048 RSA key 来签署字符串。然后我转身验证签名。这是我的代码: // initialize var hex =
我正在使用 jsrsasign 并且我有一个之前生成的 RSA 公钥和私钥。我使用以下代码生成签名。 var key = new RSAKey(); key.readPrivateKeyFromPEM
是否可以使用 jsrsasign 提取 x.509 证书的指纹,类似于使用此 openssl 命令可以实现的效果: openssl x509 -sha1 -in cert.pem -noout -fi
当使用库 javascript 库 jsrsasign 和 angularjs 时,我们尝试使用 SHA256 算法使用私钥对值进行 RSA 签名 私钥如下所示:(即 -----BEGIN ENCRY
我需要做一个 JWT 来向 Google 请求授权。由于设计原因,它需要在 Rhino 上运行的服务器脚本上完成,而我无法访问 node.js。 Google 需要 RSA SHA-256 算法。 j
我尝试使用 Web Crypto 生成 RSA key 并用它来签署 jsrsasign 的字符串(Firefox does not support RSA-PSS)。因此,我导出 Web Crypt
我正在使用 Bouncy CaSTLe 库在 C# 中生成签名,如下所示: var privateKeyBase64 = "MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBH
我是一名优秀的程序员,十分优秀!