在开发过程中会遇到与第三方接口对接的情况,有时需要生成数据签名(sign值)让api验签,在此记录一下;本文分别介绍生成base64签名和md5签名,其他方式就不一一举例了。
1、Base64签名
/// <summary>
/// 获取签名
/// </summary>
/// <param name="_doc"></param>
/// <returns></returns>
private static string EncryptSign(string _doc, string _pwd = "123456")
{
//_doc是要对其签名的内容,即数据包
//_pwd是签名密码,可以是secretKey也可以是其他,具体需要和接口提供方自行协商。
var _text = _doc + _pwd;
byte[] _input = Encoding.GetEncoding("GBK").GetBytes(_text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] _output = md5.ComputeHash(_input);
var sing = @Convert.ToBase64String(_output);
return sing;
}
}
2、MD5签名
/// <summary>
/// 获取签名
/// </summary>
/// <param name="_doc"></param>
/// <returns></returns>
private static string EncryptSign(string _doc, string _pwd = "123456")
{
//_doc是要对其签名的内容,即数据包
//_pwd是签名密码,可以是secretKey也可以是其他,具体需要和接口提供方自行协商。
var _text = _doc + _pwd;
byte[] _input = Encoding.GetEncoding("GBK").GetBytes(_text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] _output = md5.ComputeHash(_input);
string sign = string.Empty;
for (int i = 0; i < _output.Length; i++)
{
sign += _output[i].ToString("x");
}
return sign;
}
}
3、结语
如果是.netframework,上面的代码可以直接拿去根据实际业务使用,但是.netcore需要安装“System.Text.Encoding.CodePages”包,然后在”Encoding.GetEncoding("GBK").GetBytes(_text)“之前加上如下代码否则会报错。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
评论 (0)