码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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)编码即可生成签名串。

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

  • 相关阅读:
    上线不到两个月,昇腾AI助推“中国算力网”再添新节点
    函数柯里化的简单实现和应用
    React中为啥key不可以使用索引值index?(超详细版本)
    四十二、路由层
    (附源码)app校园购物网站 毕业设计 041037
    【JUC】并发编程学习笔记(三)
    python的opencv操作记录(五)-插值第二篇
    java毕业设计房屋档案信息管理Mybatis+系统+数据库+调试部署
    AcWing 4604. 集合询问
    紧急事件,停电导致安森美韩国厂全线停工 | 百能云芯
  • 原文地址:https://www.cnblogs.com/huaxiaorui/p/16656996.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号