如何在 Javascript/jquery 上使用 RSA 私钥签署数据
How to sign data with RSA private Key on Javascript/jquery
我得到了这个 C# 代码,但我需要它在 Javascript 中完成。我的想法是我需要在浏览器没有网络的情况下执行这段代码,基本上,我必须在本地存储中保存一些数据,然后使用它们来执行这个方法来生成私钥。
private static string SignData(string ppath,string ppass)
{
X509Certificate2 keyStore = new X509Certificate2(ppath, ppass);
RSA privateKey = keyStore.GetRSAPrivateKey();
byte[] iicSignature = privateKey.SignData(Encoding.ASCII.GetBytes(pConcat), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
byte[] iic = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(iicSignature);
return BitConverter.ToString(iic).Replace("-", string.Empty);
}
P.S:
我设法提取私钥并将其保存到本地storage.Now我需要用这个密钥、SHA256算法和pkcs1填充来签署一些数据。
首先使用Bouncy Castle从证书中提取您的私钥并将其转换为pkcs8。
然后您将需要找到一个 javascript 库,它使用私钥对数据进行签名。我建议您使用大多数浏览器都支持的 window.crypto
库。它有一个名为 window.crypto.subtle.sign()
的方法,它使用私钥对数据进行签名,您必须使用 window.crypto.subtle.importKey()
导入您可以阅读更多 here 关于这个库的信息。
最后,您需要一个 md5 库来散列签名数据。你可以发现 here.
这主要是您在 this chat 中谈到的内容。
我得到了这个 C# 代码,但我需要它在 Javascript 中完成。我的想法是我需要在浏览器没有网络的情况下执行这段代码,基本上,我必须在本地存储中保存一些数据,然后使用它们来执行这个方法来生成私钥。
private static string SignData(string ppath,string ppass)
{
X509Certificate2 keyStore = new X509Certificate2(ppath, ppass);
RSA privateKey = keyStore.GetRSAPrivateKey();
byte[] iicSignature = privateKey.SignData(Encoding.ASCII.GetBytes(pConcat), HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
byte[] iic = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(iicSignature);
return BitConverter.ToString(iic).Replace("-", string.Empty);
}
P.S: 我设法提取私钥并将其保存到本地storage.Now我需要用这个密钥、SHA256算法和pkcs1填充来签署一些数据。
首先使用Bouncy Castle从证书中提取您的私钥并将其转换为pkcs8。
然后您将需要找到一个 javascript 库,它使用私钥对数据进行签名。我建议您使用大多数浏览器都支持的 window.crypto
库。它有一个名为 window.crypto.subtle.sign()
的方法,它使用私钥对数据进行签名,您必须使用 window.crypto.subtle.importKey()
导入您可以阅读更多 here 关于这个库的信息。
最后,您需要一个 md5 库来散列签名数据。你可以发现 here.
这主要是您在 this chat 中谈到的内容。