首页 > 其他分享 >SpringBoot 接口签名

SpringBoot 接口签名

时间:2024-12-24 11:52:39浏览次数:4  
标签:return String 接口 secretKey 签名 import data SpringBoot

核心原理

通过秘钥(不公开)对数据(请求数据)进行加密(加密算法公开),加密过程不可逆,所以只有拥有秘钥的双方才能对数据进行正确的加密,从而确保请求是由可信来源发出的,并且请求在传输过程中没有被篡改。

注:

  1. 接口签名其实还能用作防止请求参数不被篡改
  2. 一般appId和appSecret成对出现,因为可能秘钥有多个,此时就需要根据appId从数据库中查询appSecret

 

签名算法

  • 生成签名的方法通常将请求参数按照特定规则计算出一个签名值;
  • 验证签名的方法则是对接收到的请求参数进行同样的处理,并计算出一个签名值,然后与请求中携带的签名值进行比对;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
 
public class Signature {
    /**
     * 获取签名
     * @param secretKey 密钥
     * @param data  需要签名的数据
     * @return  签名
     */
    public static String signWithHmacSha1(String secretKey, String data) {
 
        try {
            SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(signingKey);
            return Base64.getEncoder().encodeToString(mac.doFinal(data.getBytes("UTF-8")));
        } catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
 
    /**
     * 验证签名
     * @param secretKey 密钥
     * @param data  需要签名的数据
     * @param hmac  已经签名的数据
     * @return  true:签名一致
     */
    public static boolean verify(String secretKey, String data, String hmac) {
        String calculatedHmac = signWithHmacSha1(secretKey, data);
        return calculatedHmac.equals(hmac);
    }
}

 

请求拦截器

 

 

 

参考链接

【1】https://blog.csdn.net/u011974797/article/details/138123261

 

标签:return,String,接口,secretKey,签名,import,data,SpringBoot
From: https://www.cnblogs.com/ReturnOfTheKing/p/18626495

相关文章

  • 计算机毕业设计—35514 springboot小区物业服务平台(源码免费领)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用springboot框......
  • 计算机毕业设计—34242 Springboot家政服务管理系统(源码免费领)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用java技术建设家......
  • FastGPT(知识库)+One-API(统一接口管理)+ChatGLM3(本地大模型)+M3E(向量模型)
    本文技术路线为:利用ChatGLM3-6b作为基座大模型,M3E作为向量模型,基于FastGPT建立用户知识库,One-API做统一API接口管理。其中ChatGLM3和M3E模型都是在windows下部署的,FastGPT和One-API是在Linux下部署。在私有化和客制化大模型庞大需求推动下,除了从大模型的全量训练和微调这两个模......
  • CHM助手 >> 如何高效的制作比较专业的接口文档(Markdown格式)
    1CHM助手>>如何高效的制作接口文档1.1概述  用户如果书写代码的过程中使用了良好的注释,比如:doxygen规范,则有可能生成比较规范的接口文档。很多工具软件都支持编程扩展,比如:宏/脚本接口,那么,完善的接口文档将会给用户带来极大的便利,否则,软件的使用和推广都会受到较大......
  • SpringBoot支持Kafka多源配置的同时还要支持启停配置化,是真的会玩
    开心一刻今早,女朋友给我发微信她:宝贝,你要记住她:我可是你女朋友,你相亲就亲,想抱就抱她:不要老是问我,男生要主动一些我:可是你上次报警可不是这么说的基础回顾SpringBoot集成Kafka非常简单,我相信你们都会,但我还是想带你们回顾下;只需要进行以下几步即可完成SpringBoot与......
  • springboot毕设 在线招聘网站 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,网络招聘已成为现代求职与招聘的主流方式之一。传统的招聘方式,如招聘会、报纸广告等,已难以满足当前快速变化的就业市场需求......
  • springboot毕设 闸口社区管理系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,社区作为城市的基本单元,其管理效率与质量直接关系到居民的生活质量与幸福感。闸口社区作为城市中的一个典型代表,面临着人口结构......
  • 基于Springboot的大学生心理健康管理系统的设计与实现-毕业设计源码21346
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1技术可行性2.1.2经济可行性2.1.3操作可行性2.1.4社会可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2......
  • 毕业设计-可白嫖源码-springboot智慧园区管理系统(案例分析)
    摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的智慧园区管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取或者借助一些软件对园区......
  • 京东商品详情数据接口(JD.item_get)丨京东API接口指南
    京东商品详情数据接口(JD.item_get)是京东开放平台为开发者提供的重要服务,以下是相关介绍:功能作用获取商品基本信息:包括商品ID、标题、价格、库存量、库存状态、商品链接等,为商品展示和销售管理提供基础数据.查看商品详情描述:涵盖图片、规格参数、包装清单、售后服务等,帮助用......