利用私鑰加簽名:
//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);
}
}