using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; namespace iWareSda_QQJF.WEBAPI.TestPost { public class SignExtension { public static bool Validate(string timeStamp, string nonce, string staffId, string token, string data, string signature) { var hash = System.Security.Cryptography.MD5.Create(); //拼接签名数据 var signStr = timeStamp + nonce + staffId + token + data; //将字符串中字符按升序排序 var sortStr = string.Concat(signStr.OrderBy(c => c)); var bytes = Encoding.UTF8.GetBytes(sortStr); //使用MD5加密 var md5Val = hash.ComputeHash(bytes); //把二进制转化为大写的十六进制 StringBuilder result = new StringBuilder(); foreach (var c in md5Val) { result.Append(c.ToString("X2")); } return result.ToString().ToUpper() == signature; } /// /// 前端接口使用的签名验证 /// /// /// /// /// /// /// /// /// public static bool ValidateApp(string timeStamp, string nonce, string appKey, string appSecret, string accessToken, string data, string signature) { var hash = System.Security.Cryptography.MD5.Create(); //拼接签名数据 var signStr = timeStamp + nonce + appKey + appSecret + accessToken + data; //将字符串中字符按升序排序 var sortStr = string.Concat(signStr.OrderBy(c => c)); var bytes = Encoding.UTF8.GetBytes(sortStr); //使用MD5加密 var md5Val = hash.ComputeHash(bytes); //把二进制转化为大写的十六进制 StringBuilder result = new StringBuilder(); foreach (var c in md5Val) { result.Append(c.ToString("X2")); } return result.ToString().ToUpper() == signature; } /// /// 货主接口使用的签名验证 /// /// /// /// /// /// /// /// public static bool ValidateConsignor(string timeStamp, string nonce, string consignorCode, string token, string data, string signature) { var hash = System.Security.Cryptography.MD5.Create(); //拼接签名数据 var signStr = timeStamp + nonce + consignorCode + token + data; //将字符串中字符按升序排序 var sortStr = string.Concat(signStr.OrderBy(c => c)); var bytes = Encoding.UTF8.GetBytes(sortStr); //使用MD5加密 var md5Val = hash.ComputeHash(bytes); //把二进制转化为大写的十六进制 StringBuilder result = new StringBuilder(); foreach (var c in md5Val) { result.Append(c.ToString("X2")); } return result.ToString().ToUpper() == signature; } } }