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;
|
}
|
|
/// <summary>
|
/// 前端接口使用的签名验证
|
/// </summary>
|
/// <param name="timeStamp"></param>
|
/// <param name="nonce"></param>
|
/// <param name="appKey"></param>
|
/// <param name="appSecret"></param>
|
/// <param name="accessToken"></param>
|
/// <param name="data"></param>
|
/// <param name="signature"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 货主接口使用的签名验证
|
/// </summary>
|
/// <param name="timeStamp"></param>
|
/// <param name="nonce"></param>
|
/// <param name="consignorCode"></param>
|
/// <param name="token"></param>
|
/// <param name="data"></param>
|
/// <param name="signature"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|