public override int GetHashCode() { unchecked { var hashCode = OrdinalComparer.GetHashCode(this.ValueFormat); hashCode = (hashCode * 397) ^ OrdinalComparer.GetHashCode(this.SymbolFormat); return(hashCode); } }
public override int GetHashCode() { unchecked { var hashCode = OrdinalComparer.GetHashCode(this.ValueFormat ?? string.Empty); hashCode = (hashCode * 397) ^ this.SymbolFormat.GetHashCode(); hashCode = (hashCode * 397) ^ this.Unit.GetHashCode(); return(hashCode); } }
public override bool Equals(object obj) { OrdinalComparer comp = obj as OrdinalComparer; if (comp != null) //Comparer follows ignoreCase { return(m_ignoreCase == comp.m_ignoreCase); } return(false); }
/// <summary> /// 数字签名-数组原文 /// </summary> /// <param name="srcDataArr">数组原文(不包括接入渠道的密钥)</param> /// <returns></returns> public virtual string SignData(string[] srcDataArr) { if (string.IsNullOrWhiteSpace(this.Secret)) { throw new Exception("请先设置内部密钥secret"); } var tempList = srcDataArr.ToList(); tempList.Add(this.Secret); OrdinalComparer comp = new OrdinalComparer(); var tempArr = tempList.ToArray().OrderBy(t => t, comp); var srcData = string.Join("", tempArr); return(this.SignData(srcData)); }
public static string GetSignature(List <KeyValuePair <string, string> > RequestPara) { RequestPara.Add(new KeyValuePair <string, string>("appSignKey", "R2xBNTNTVmxocTRIbm45V0lKeURZaW93RkpnQTIzUWV3OCtzejllL29ObXdUdVYwSWtXT0dnPT0=")); StringBuilder sb = new StringBuilder(); OrdinalComparer comp = new OrdinalComparer(); //参数排序 var keys = RequestPara.OrderBy(a => a.Key, comp); foreach (var a in keys) { sb.AppendFormat("&{0}={1}", a.Key, a.Value); } //加密 return(GetSha1(sb.ToString().Substring(1)).ToLower()); }
public override Boolean Equals(Object?obj) => OrdinalComparer.Equals(this, obj as FileNameWithoutExtension);
/// <summary> /// 验证数字签名 /// </summary> /// <param name="appKey">应用Key</param> /// <param name="timeStamp">时间截</param> /// <param name="nonce">随机字符串</param> /// <param name="signature">签名串</param> /// <param name="extendDataArr">扩展签名数据</param> /// <returns></returns> public virtual Result VerifyData(string appKey, string timeStamp, string nonce, string signature, List <string> extendDataArr = null) { var res = new Result() { Title = "验证数字签名" }; #region 验证参数完整性 if (string.IsNullOrWhiteSpace(appKey)) { res.Msg = "AppKey不能为空"; return(res); } if (string.IsNullOrWhiteSpace(timeStamp)) { res.Msg = "时间截不能为空"; return(res); } if (string.IsNullOrWhiteSpace(nonce)) { res.Msg = "随机串不能为空"; return(res); } if (string.IsNullOrWhiteSpace(signature)) { res.Msg = "签名不能为空"; return(res); } #endregion if (GetSecretDelegate == null) { throw new Exception("获取内部密钥方法未实现"); } var secret = GetSecretDelegate(appKey); if (string.IsNullOrWhiteSpace(secret)) { res.Msg = "不是受权的应用,请勿非法操作!"; return(res); } var tempList = new List <string> { secret, timeStamp, nonce }; if (extendDataArr != null && extendDataArr.Count > 0) { tempList.AddRange(extendDataArr); } OrdinalComparer comp = new OrdinalComparer(); var tempArr = tempList.ToArray().OrderBy(t => t, comp); string srcDataStr = string.Join("", tempArr); if (EncryptDelegate == null) { throw new Exception("加密方法未实现"); } var tmpsignature = EncryptDelegate(srcDataStr); if (tmpsignature != signature) { res.Msg = string.Format("无效的数字签名。接收加密签名串:{0},原签名串:{1}, Api站点加密得到签名串:{2}", signature, srcDataStr, tmpsignature); return(res); } if (timeStamp.IsNumeric()) { DateTime dtTime = timeStamp.StampToDateTime(); double minutes = DateTime.Now.Subtract(dtTime).TotalMinutes; if (minutes > ExpiredMinutes) { res.Msg = "签名时间戳失效"; return(res); } res.Success = true; res.Msg = "验证数字签名成功"; } return(res); }
public bool Equals(CompositeFormatKey other) { return(OrdinalComparer.Equals(this.CompositeFormat, other.CompositeFormat)); }
public Int32 CompareTo(FileExtension?other) => OrdinalComparer.Compare(this, other);
public bool Equals(ValueAndSymbolFormatKey other) { return(OrdinalComparer.Equals(this.ValueFormat, other.ValueFormat) && OrdinalComparer.Equals(this.SymbolFormat, other.SymbolFormat)); }
public Boolean Equals(FileExtension?other) => OrdinalComparer.Equals(this, other);
public override int GetHashCode() { return(OrdinalComparer.GetHashCode(this.CompositeFormat ?? string.Empty)); }
// Equals method for the comparer itself. public override bool Equals(object obj) { OrdinalComparer comparer = obj as OrdinalComparer; return(comparer != null && _ignoreCase == comparer._ignoreCase); }
public override Int32 GetHashCode() => OrdinalComparer.GetHashCode(this);
public override Boolean Equals(Object?obj) => OrdinalComparer.Equals(this, obj as FileName);
public Boolean Equals(FileName?other) => OrdinalComparer.Equals(this, other);
public Int32 CompareTo(FileName?other) => OrdinalComparer.Compare(this, other);
public async Task <AjaxResult <List <RQBankInfo> > > BankListAsync(RQBankListRequest rQBankListRequest) { AjaxResult <List <RQBankInfo> > ajaxResult = new AjaxResult <List <RQBankInfo> >(); string bizData = JsonConvert.SerializeObject(rQBankListRequest); //实例化 RQBaseRequest rQBaseRequest = new RQBaseRequest(); rQBaseRequest.bizData = bizData; SortedDictionary <string, string> singKeyValuePairs = new SortedDictionary <string, string> { { "appId", rQBaseRequest.appId }, { "signType", rQBaseRequest.signType }, { "version", rQBaseRequest.version }, { "timestamp", rQBaseRequest.timestamp }, { "bizData", bizData } }; string signParamsStr = OrdinalComparer.FormatParam(singKeyValuePairs); //请求如期签名 string sign = _frRsaPkcs1Util.SignData(signParamsStr, HashAlgorithmName.MD5, RSASignaturePadding.Pkcs1); rQBaseRequest.sign = sign; var request = new HttpRequestMessage(HttpMethod.Post, RuqiConsts.Urls.BankList); HttpClient httpClient = _httpClientFactory.CreateClient(RuqiConsts.RuqiHttpClient); string contentStr = JsonConvert.SerializeObject(rQBaseRequest); request.Content = new StringContent(contentStr, Encoding.UTF8, "application/json"); HttpResponseMessage response = await httpClient.SendAsync(request); if (!response.IsSuccessStatusCode) { ajaxResult.Success = false; ajaxResult.Content = "接口请求失败,请重试!"; } else { string result = await response.Content.ReadAsStringAsync(); //TODO:InsertAsync //ServiceParams rqParams = new ServiceParams //{ // JsonContext = result, // ServiceType = (int)ServiceType.BankList, // ServiceName = "BankList", // AppId = "30002" //}; //await _repository.InsertAsync(rqParams); var obj = JsonConvert.DeserializeObject <BaseResult <List <RQBankInfo> > >(result); if (obj.code.Equals(200)) { ajaxResult.Result = obj.data; } else { ajaxResult.Success = false; ajaxResult.Content = "请求失败,请重试!"; } } return(ajaxResult); }