c#生成sign签名值
侧边栏壁纸
  • 累计撰写 62 篇文章
  • 累计收到 23 条评论

c#生成sign签名值

一缕清风
2021-01-20 / 0 评论 / 70 阅读 / 正在检测是否收录...

简介

在开发过程中会遇到与第三方接口对接的情况,有时需要生成数据签名(sign值)让api验签,在此记录一下;本文分别介绍生成base64签名和md5签名,其他方式就不一一举例了。

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;
    }
}

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;
    }
}

结语

如果是.netframework,上面的代码可以直接拿去根据实际业务使用,但是.netcore需要安装“System.Text.Encoding.CodePages”包,然后在”Encoding.GetEncoding("GBK").GetBytes(_text)“之前加上如下代码否则会报错。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
0

评论 (0)

取消