先贴一段代码如下:
//调用接口前获取此签名文本传入HTTP请求头 ,api接收到签名信息后再用此方法验证传入参数是否有任何篡改,其中timestamp时间标记,salt随机盐,userid用户id,data用户传入的数据参数字符串(json或A=a&B=b)
public static string getsign(string timestamp, string salt, string userid, string data)
{
var hash = System.Security.Cryptography.MD5.Create();
//拼接签名数据
var signStr = $"{timestamp}{salt}{userid}{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();
}
//获取随机盐
private static string getsalt()
{
return Guid.NewGuid().ToString();
}
//当前时间
private static string gettime()
{
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
网友评论