SHA1withRSA加签名和验签名

本文详细介绍了如何使用RSA算法进行数据签名与验证的过程。通过具体的代码实现,展示了如何利用私钥对数据进行签名,以及如何使用公钥对签名进行验证。文章提供了完整的代码示例,包括如何处理字符串、进行Base64编码、计算哈希值、生成签名以及验证签名等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用私钥加签名:

//contentForSign为需加标签的字符串

public String signWhithsha1withrsa(string contentForSign)

{

string result="";

try

{

RSACryptoServiceProvider    tMerchantKey=GetPrivateKey();//获取私钥

SHA1Managed tHash=new SHA1Managed();

//将传递需要加签的字符串进行base64操作

byte[] base64=Encoding.UTF8.GetBytes(Convert.ToBase64String(Encoding.UTF8.GetBytes(contentForSign)));

byte[] tHashedData=tHash.ComputeHash(base64);

//对其进行加签名

byte[] tSigned=tMerchantKey.SignHash(tHashedData,"SHA1");

result=Convert.ToBase64String(tSigned);

return result;

}

catch(Exception e)

{

logger.Info("加签失败!",e);

}}

 

//读取cer并验证公钥签名

//requestBody为json报文数据

//signature为加签标识

public bool read_cer_and_verify_sign(string requestBody,string signature)

{

bool result=false;

try

{

byte[] orgin=Encoding.UTF8.GetBytes((requestBody));//json报文数据获得字节数据

byte[] singedBase64=Convert.FromBase64String((signature));

//读取证书

RSACryptoServiceProvider tMerchantKey=GetPublicKey();//获取公钥

result=tMerchantKey.VerifyData(orgin,"SHA1",singedBase64);

return result;

}

catch(Exception e)

{

logger.Info("验签失败!",e);

}

}

转载于:https://www.cnblogs.com/huodige/p/10516638.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值