• API接口签名校验(C#版)


    我们在提供API服务的时候,为了防止数据传输过程被篡改,通常的做法是对传输的内容进行摘要签名,把签名串同参数一起请求API,API服务接收到请求后以同样的方式生成签名串,然后进行对比,如果签名串不一致,说明数据在传递过程中被篡改了,这时API服务拒绝本次请求即可,这样我们就实现了签名校验。

    常见的摘要算法方式很多,如MD5、SHA、HMAC等,本文采用的是MD5+Base64的方式生成签名串,具体如下:

    1、MD5加密方法

    点击查看代码
    ///
    /// 字符串MD5加密
    ///
    ///要加密的字符串
    ///编码方式
    ///密文
    public string MD5(string str, string charset)
    {
    byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
    try
    {
    System.Security.Cryptography.MD5CryptoServiceProvider check;
    check = new System.Security.Cryptography.MD5CryptoServiceProvider();
    byte[] somme = check.ComputeHash(buffer);
    string ret = "";
    foreach (byte a in somme)
    {
    if (a < 16)
    ret += "0" + a.ToString("X");
    else
    ret += a.ToString("X");
    }
    return ret.ToLower();
    }
    catch
    {
    throw;
    }
    }

    2、base64编码方法

    点击查看代码
    ///
    /// base64编码
    ///
    /// 内容
    /// 编码方式
    ///
    public string base64(String str, String charset)
    {
    return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
    }

    3、提前给调用方一个Key(类似于私钥),生成签名的时候Key一起参与签名算法。Key相当于加密因子,只有双方知道,这样才能确保安全。

    4、最后生成签名即可:把(参与签名内容(未编码)+Key)进行 MD5 加密,然后Base64编码,最后进行 URL(utf-8)编码即可生成签名串。

    以上就是签名和验签的整体思路,如果对您有帮助劳烦帮忙点个赞,收藏关注一下,可以相互学习共同进步。

  • 相关阅读:
    并发-Executor框架笔记
    Windows 11 Manager v1.1.8 系统优化工具中文便携版
    巧记书本结构--思维导图
    丹青映画携梦枕貘巨著《暗狩之师》参加玩协四展
    『现学现忘』Git后悔药 — 34、git commit --amend 命令
    【Excel函数】文本处理之Text函数
    React 入门实例教程
    存储介质中ext4的文件排布
    MySQL 表的增删查改
    软件公司如何提升效能?研发团队的北极星指标
  • 原文地址:https://www.cnblogs.com/huaxiaorui/p/16656996.html