我尝试了我的查询的搜索解决方案,我无法找到匹配我正在寻找的,这是非常基本的,但为了我更好地理解我张贴下面的查询。
我想使用“SHA256withRSA”算法对字符串进行编码和签名。我可以看到很多使用“SHA256withRSA”的java示例代码,但在C#中,我可以看到首先使用SHA256对数据进行散列,然后使用RSACryptServiceProvider对散列进行签名。
我的问题是:
>
在C#中,我们有单独的“SHA256withRSA”算法,如果是,请提供示例代码帮助。
如果没有,那么在C#中实现它的更好方法是什么?
首先,你需要一个密钥对。要生成密钥对,您可以执行以下操作并使用OpenSSL:
>
生成私钥
openssl genrsa-取出我的私钥。pem 2048
生成公共证书
openssl req-new-keymy-private-key.pem-x509天36500my-public-cert.pem
生成一个p12文件
openssl pkcs12-导出-inmy-public-cert.pem-inkeymy-private-key.pem-out my-key对. p12
现在,您可以在C#中使用以下示例代码。NET创建数字签名并验证数字签名
public static string SignData(byte[] data, string pkcs12File, string pkcs12Password)
{
X509Certificate2 signerCert = new X509Certificate2(pkcs12File, pkcs12Password, X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider rsaCSP = new RSACryptoServiceProvider();
rsaCSP.FromXmlString(signerCert.PrivateKey.ToXmlString(true));
var SignedData = rsaCSP.SignData(data, CryptoConfig.MapNameToOID("SHA256"));
return Convert.ToBase64String(SignedData);
}
public static bool VerifySignature(byte[] data, string signature, string publicCert)
{
X509Certificate2 partnerCert = new X509Certificate2(publicCert);
RSACryptoServiceProvider rsaCSP = (RSACryptoServiceProvider)partnerCert.PublicKey.Key;
return rsaCSP.VerifyData(data, CryptoConfig.MapNameToOID("SHA256"), Convert.FromBase64String(signature));
}
请记住,您的项目需要添加对System.安全性
不要使用RSACryptoServiceProvider
,除非您正在与CAPI进行互操作,例如打开命名密钥。
要使用SHA-(2-)256执行RSA签名,请执行以下操作:
byte[] signature = rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
您可以从证书中获取RSA对象:
using (RSA rsa = cert.GetRSAPrivateKey())
{
...
}
或者,您可以根据现有的RSA参数制作一个:
using (RSA rsa = RSA.Create(rsaParameters))
{
...
}
或者,您可以从无到有地创建一个新密钥:
using (RSA rsa = RSA.Create(2048))
{
// you’ll need to save the parameters somewhere to have a stable key
rsaParameters = rsa.ExportParameters(true));
...
}
我有一个包含EC私钥的文件: 我有一个证书,它的公钥对应于私钥: 在 pem 格式中: 以txt格式: 我正在努力完成两件事: < li >使用ecdsa-with-SHA256签名算法使用私钥对字节数组进行签名 < li >使用证书中的公钥验证签名是否正确 我尝试过使用充气城堡图书馆。这是我到目前为止所拥有的。我的断言是失败的。
我需要使用RSA-SHA1算法对XML文档的一个节点进行签名(并最终验证)。W3.org链接 RSA-SHA1 URI: http://www.w3.org/2000/09/XMLDSIG#RSA-SHA1 指定于: [XMLDSIG-CORE2002]第6.4.2节 签名生成发生在以下位置: 唯一带有参数的重写需要: (链接) 在.NET中用RSA-SHA1签署XML最轻松的方式是什么? 编辑:
问题内容: 我是Visual Studio用户,习惯于调试断点。我现在在Linux环境中工作,并且正在使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但它并不像拥有UI那样容易。 如何在Eclipse中使用gdb? 问题答案: 以下说明适用于Eclipse 3.5(Galileo)。对于3.6(Helios)
我想分两步使用RSA/PSS签名制作SHA256,首先散列一条消息,然后使用RSASSA-PSS签名摘要 但我使用SHA256时RSA/PSS无法验证 我需要一些帮助,谢谢你的帮助。
我正在编写dijkstra算法的代码,对于我们应该找到与当前使用的节点之间距离最小的节点的部分,我使用了一个数组,并完全遍历它来找出节点。 这部分可以用二进制堆代替,我们可以在O(1)时间内计算出节点,但是我们也在进一步的迭代中更新节点的距离,我将如何合并那个堆? 对于数组,我所要做的就是转到(ith-1)索引并更新该节点的值,但在二进制堆中不能做同样的事情,我必须进行完整的搜索以确定节点的位置,
我能够使用带RSA私钥的bouncy castle和“SHA256withRSA”算法对证书进行签名。我使用下面的链接作为参考来实现这一点。使用Bouncy Castle签署CSR 现在我有椭圆曲线密钥与ECDSA签署我的CA。因此,我想通过这些CA用EC密钥和“SHA256 with ECDSA”算法签署证书。然而,我被困在下面的片段特定于RSA密钥,我想使用EC密钥。 请帮助我如何使用ECDS