static void Main(string[] args) { var request = new GenenerateSignatureModel() { AppId = "qd1bxdtroaf2bjpz", Secert = "bq7l2yuvta7babisntweusta7qz3goea", Hash = "md5", Timestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds, Version = "2.0", BirthDate = DateTime.Now }; var sigr = GenenerateSignature(request); Console.WriteLine(sigr); Console.Read(); }
public static string GenenerateSignature(GenenerateSignatureModel requestModel) { var map = new Dictionary <string, object> { { nameof(requestModel.AppId), requestModel.AppId }, { nameof(requestModel.Version), requestModel.Version }, { nameof(requestModel.Timestamp), requestModel.Timestamp }, { nameof(requestModel.Hash), requestModel.Hash }, { nameof(requestModel.Secert), requestModel.Secert }, }; var formatMap = GetFormatsByType(requestModel.GetType()); var signStr = map.OrderBy(o => o.Key, StringComparer.Ordinal) .Aggregate(new StringBuilder(), (builder, pair) => { var value = pair.Value; if (value != null && formatMap.ContainsKey(pair.Key)) { var format = "{0:" + formatMap[pair.Key] + "}"; value = string.Format(format, value); } if (value == null) { value = ""; } return(builder.Append(LowerFirstCase(pair.Key)) .Append('=') .Append(value)); }).ToString(); return(signStr.Hash().ToLower()); }