public static bool Sign(Dictionary <string, string> data, Encoding encoder, string signCertpath, string signCertpwd) { data["certId"] = CertUtil.GetSignCertId(signCertpath, signCertpwd); string str = SignUtil.CoverDictionaryToString(data); byte[] numArray = SecurityUtil.Sha1X16(str, encoder); string lower = BitConverter.ToString(numArray).Replace("-", "").ToLower(); byte[] numArray1 = SecurityUtil.SignBySoft(CertUtil.GetSignProviderFromPfx(signCertpath, signCertpwd), encoder.GetBytes(lower)); data["signature"] = Convert.ToBase64String(numArray1); return(true); }
/// <summary> /// 签名 /// </summary> /// <param name="dataStr"></param> /// <param name="encoder"></param> /// <returns></returns> public static bool Sign(Dictionary <string, string> data, Encoding encoder, string signCertpath, string signCertpwd) { //设置签名证书序列号 ? data["certId"] = CertUtil.GetSignCertId(signCertpath, signCertpwd); //将Dictionary信息转换成key1=value1&key2=value2的形式 string stringData = CoverDictionaryToString(data); string stringSign = null; byte[] signDigest = SecurityUtil.Sha1X16(stringData, encoder); string stringSignDigest = BitConverter.ToString(signDigest).Replace("-", "").ToLower(); byte[] byteSign = SecurityUtil.SignBySoft(CertUtil.GetSignProviderFromPfx(signCertpath, signCertpwd), encoder.GetBytes(stringSignDigest)); stringSign = Convert.ToBase64String(byteSign); //设置签名域值 data["signature"] = stringSign; return(true); }