当前位置: 首页 > news >正文

框架模块说明 #07 API加密

背景

在实际开发过程中,我们通常会涉及到数据加密的问题。本文重点探讨两个方面:一是外部接口调用时的数据加密,二是服务间调用的数据加密与解密。

对于外部接口调用,每个用户将拥有独立的动态 AES 加密密钥(KEY)和初始向量(IV)。在用户每次重新登录后,系统会重新生成 KEY 和 IV,以保证调用端的唯一性。这种机制不仅提高了数据传输的安全性,还能有效限制非法调用。

对于服务间的调用,我们则采用系统级的 KEY 和 IV 对 API 调用的数据进行加密和解密。这种方式适用于系统内部的安全保障,确保服务间通信的可靠性和安全性。

通过上述两种方式,我们能够满足不同场景下的加密需求,同时有效提升系统的安全性和调用端的独特性。

注解类

通常用在controller上,上面用到了枚举用来标识接口的加密方式,默认为系统加密码,因为一开始是准备用于服务间调用的。

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface ApiEncrypt {//加密方式ApiEncryptType encryptType() default ApiEncryptType.BY_SYSTEM;}

AOP类

在 AOP 的 doAfter 方法中对结果进行拦截和输出是常见的操作。如果您对其实现原理感兴趣,可以查阅相关资料以深入了解。

其中,核心的加解密功能主要由 ApiEncryptUtil 类实现。以下是相关的代码片段:

@Aspect
@Slf4j
public class ApiEncryptAspect {@Pointcut("@annotation(com.unknow.first.api.encrypt.annotation.ApiEncrypt)")public void apiEncryptPointcut() {}@AfterReturning(value = "apiEncryptPointcut()", returning = "result")public void after(JoinPoint joinPoint, CommonApiResult<Object> result) throws Throwable {Signature signature = joinPoint.getSignature();MethodSignature msg = (MethodSignature) signature;//获取注解标注的方法Method method = joinPoint.getTarget().getClass().getMethod(msg.getName(), msg.getParameterTypes());//通过方法获取注解final ApiEncrypt apiEncrypt = method.getAnnotation(ApiEncrypt.class);ApiEncryptUtil.encryptData(result, apiEncrypt.encryptType());}
}

示例代码

    @GetMapping("/api/encrypt/user")@ApiOperation("api加密-用户密钥加密")@ApiEncrypt(encryptType = BY_USER)@SystemResource(authMethod = AuthMethod.ALLSYSTEMUSER)public CommonApiResult<Object> testEncryptByUserKey() {Map<String, Object> value = new HashMap<>();value.put("test1", "测试1");value.put("test2", "测试2");return CommonApiResult.createSuccessResult(value);}

总结

这种加密方式在一定程度上模拟了云平台中 AK/SK 机制的加密模式,但与其不同的是,我们的 AK/SK 是动态生成的。这主要是基于外部对接用户的特点,考虑到会话通常持续时间较长,因此动态生成的 AK/SK 不会快速过期,同时也能够有效确保会话终端的唯一性。

未来,我们计划进一步扩展功能,允许为外部调用用户配置固定的 AK/SK,以满足特定场景下的需求。以下是相关代码参考:

GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。icon-default.png?t=O83Ahttps://gitcode.com/YouYouLongLong/springcloud-framework/tree/master/core-common-parent/api-encrypt-common

相关文章:

框架模块说明 #07 API加密

背景 在实际开发过程中&#xff0c;我们通常会涉及到数据加密的问题。本文重点探讨两个方面&#xff1a;一是外部接口调用时的数据加密&#xff0c;二是服务间调用的数据加密与解密。 对于外部接口调用&#xff0c;每个用户将拥有独立的动态 AES 加密密钥&#xff08;KEY&…...

安卓BLE蓝牙开发经验分享

注意点一&#xff1a;一开始必须申请权限&#xff0c;否则后面根本无法成功。 注意点二&#xff1a;BLE使用向某个特征写入来发送数据&#xff0c;写入一次默认长度是23字节&#xff0c;必须向蓝牙设备申请更大字节的写入才能发送更多字节。&#xff08;23字节是BLE通信的最小…...

后缀表达式有什么场景应用

后缀表达式&#xff08;Reverse Polish Notation, RPN&#xff09;在多个领域中有广泛的应用&#xff0c;主要由于其简洁性和易于计算机处理的特点。以下是一些主要的应用场景&#xff1a; ### 1. **编译器和解释器** 后缀表达式在编译器和解释器中用于表达式求值。由于后缀表…...

使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构(未做共享存储版)

文章目录 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构Redis 主从架构部署 (1.yaml)Redis Sentinel 部署 (2.yaml)Sentinel 服务暴露 (3.yaml)部署步骤总结 使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构 本文将详细介绍如何在 Kubernetes 中部署 Redis …...

AI开发 - 用GPT写一个GPT应用的真实案例

就在昨天&#xff0c;我的同事推荐给我了一个第三方的公共大模型API&#xff0c;这个API集合了国际上上几乎所有知名的大模型&#xff0c;只需要很少的费用&#xff0c;就可以接入到这些大模型中并使用它们。成本之低&#xff0c;令人乍舌&#xff01;包括我们现在无法试用的 G…...

C#—索引器

C#—索引器 索引器&#xff08;Indexer&#xff09;是类中的一个特殊成员&#xff0c;它能够让对象以类似数组的形式来操作&#xff0c;使程序看起来更为直观&#xff0c;更容易编写。索引器与属性类似&#xff0c;在定义索引器时同样会用到 get 和 set 访问器&#xff0c;不同…...

杨振宁大学物理视频中黄色的字去掉(稳定简洁版本,四)

杨振宁大学物理1214 色带矩形带来很大麻烦&#xff01; 今天想到一个方法&#xff0c;整个色带矩形拉通&#xff0c;做个通铺处理&#xff0c;不计算&#xff0c;代码做最小化&#xff0c;最稳定追求。 因为黄色字稳定&#xff0c;我们找到他的中心&#xff0c;而这个色带矩形…...

排序算法(5):归并排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 归并排序 归并排序采用分治法&#xff0c;将序列分成若干子序列&#xff0c;每个子序列有序后再合并成有序的完整序列。 在数组排序中&#xff0c;如果只有一个数&#xff0c;那么它本身就是有序的。如果有两个数&#xff0…...

Gate学习(7)引入体素源

一、从GitHub下载体素源模型源码 下载地址&#xff1a;BenAuer2021/Phantoms-for-Nuclear-Medicine-Imaging-Simulation&#xff1a;用于核医学成像应用的模型&#xff08;闪烁显像、SPECT 和 PET&#xff09; --- BenAuer2021/Phantoms-For-Nuclear-Medicine-Imaging-Simulat…...

2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级&#xff0c;我来复盘小林coding的计算机网络的知识点&#xff1a; TCP/IP 网络模型有哪几层? 问大家&#xff0c;为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信&#xff0c;有…...

item2 for macos

安装Item2 brew install iterm2 查看终端类型 cat /etc/shells Mac OS X 10.15 已经将默认的shell从Bash换成了zsh&#xff0c;所以不用安装&#xff0c;10.15以前的可以使用下面的命令进行安装 brew install zsh 安装Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…...

二维三维空间上两点之间的距离

二维三维路径上,路径总距离以及途径点与障碍物之间的距离等都需要计算两点之间的距离。两点之间的距离有多种计算方法,这些计算方法主要取决于所考虑的空间维度、点的属性以及具体的应用场景。以下是一些常见的距离计算方法: 1. 曼哈顿距离(Manhattan distance) 定义:也…...

相机测距原理

基础概念的回顾 焦距的定义 焦距是指透镜或镜头的光学中心&#xff08;通常是透镜的几何中心&#xff09;到其焦点的距离。 焦点是光线的交点&#xff0c;它指的是透镜或镜头聚焦所有入射光线后汇聚的位置。焦点的位置与透镜的曲率和光线的入射角度相关。就是说所有光线经过…...

Debezium SchemaNameAdjuster 分析

Debezium SchemaNameAdjuster 分析 目录 1. 概述2. 核心功能3. 实现原理4. 应用场景5. 扩展示例6. 总结1. 概述 SchemaNameAdjuster 是 Debezium 中的一个工具类,主要用于确保 Schema 名称符合 Avro 命名规范。在数据库变更事件被转换为 Kafka 消息时,需要为每个表和字段创…...

Stable Diffusion绘画 | SDXL模型使用注意事项

注意事项 SDXL模型的使用&#xff0c;对电脑配置要求更高&#xff0c;需要 8GB 以上显存的显卡SDXL模型兼容性不太好&#xff0c;容易出现错误&#xff0c;对 Mac 电脑不友好只能选择 SDXL模型 训练的 LoRA 使用不能使用旧的 VAE文件 SDXL 专用 VAE 文件&#xff1a;sdxl_vae.…...

(五)机器学习 - 数据分布

数据分布&#xff08;Data Distribution&#xff09;是指数据在不同值或值区间内的分布情况&#xff0c;它描述了数据点在整个数据集中是如何分散或集中的。数据分布可以通过多种方式来分析和表示&#xff0c;包括图形和数值方法。 常见的数据分布特征和描述数据分布的方法&…...

Flink State面试题和参考答案-(上)

什么是 Flink 中的状态&#xff08;State&#xff09;&#xff1f; Flink 中的状态是指在 Flink 流处理程序中&#xff0c;操作符或函数用于存储和访问数据的机制。状态可以看作是在事件流处理过程中&#xff0c;随着时间推移而累积或变更的数据集合。在 Flink 的有状态流处理…...

利用开源Stable Diffusion模型实现图像压缩比竞争方法用更低的比特率生成更逼真的图像

概述 论文地址&#xff1a;https://studios.disneyresearch.com/app/uploads/2024/09/Lossy-Image-Compression-with-Foundation-Diffusion-Models-Paper.pdf 迪士尼的研究部门正在提供一种新的图像压缩方法&#xff0c;利用开源Stable Diffusion V1.2 模型&#xff0c;以比竞…...

QT信号与槽机制详解

当信号发出后&#xff0c;被连接的槽函数会自动被回调&#xff0c;类似观察者模式&#xff0c;当发生了感兴趣的事件&#xff0c;某一个操作就会被自动触发。信号是由于用户对窗口或控件进行了某些操作&#xff0c;导致窗口或控件产生了某个特定事件&#xff0c;这时Qt对应的窗…...

openGauss开源数据库实战二十二

文章目录 任务二十二 使用JDBC访问openGauss数据库任务目标实施步骤一、查看和设置隔离级别1.查看系统默认的隔离级别2.设置系统默认的隔离级别3.查看当前会话的隔离级别4.设置当前会话的隔离级别5.设置当前事务的隔离级别 二、读提交隔离级别测试三、可重复读隔离级别测试 任务…...

2026亲测:专业AI智能降重工具选这款就对了

2026 年降 AIGC 工具已经从“基础语义改写”进化为多维度智能优化系统&#xff0c;核心评测指标涵盖 AI 痕迹清除精准度、学术表达一致性、格式结构完整性、长段落逻辑流畅性、降重适配范围以及高校检测合规性。本次测评覆盖 8 款主流工具&#xff0c;测试内容包括中英文论文处…...

仅限首批50家申请者:ElevenLabs潮州话语音定制音色内测通道开放(含潮汕非遗传承人声纹授权协议模板)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ElevenLabs潮州话语音定制音色内测计划概览 ElevenLabs 正式启动潮州话语音合成能力的定向内测&#xff0c;聚焦方言语音建模、声学特征保留与文化语境适配三大技术维度。本次内测面向具备潮州话母语能力的开发…...

HS2-HF Patch:如何用5分钟为HoneySelect2实现完整汉化与MOD整合

HS2-HF Patch&#xff1a;如何用5分钟为HoneySelect2实现完整汉化与MOD整合 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF Patch是HoneySelect2玩家的终…...

如何让老旧Windows系统重新获得安全更新:Legacy Update完整解决方案

如何让老旧Windows系统重新获得安全更新&#xff1a;Legacy Update完整解决方案 【免费下载链接】LegacyUpdate Get back online, activate, and install updates on your legacy Windows PC 项目地址: https://gitcode.com/gh_mirrors/le/LegacyUpdate 还在为Windows X…...

架构解密:如何通过FastExcel流式处理引擎重塑Java Excel操作效率标准

架构解密&#xff1a;如何通过FastExcel流式处理引擎重塑Java Excel操作效率标准 【免费下载链接】fastexcel Generate and read big Excel files quickly 项目地址: https://gitcode.com/gh_mirrors/fas/fastexcel 在当今数据驱动的企业环境中&#xff0c;Excel文件处理…...

长期使用Taotoken Token Plan套餐对项目研发成本的控制效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐对项目研发成本的控制效果 在项目研发中&#xff0c;大模型API调用成本是预算管理的重要一环。对…...

从零开始学大模型Agent:收藏这份反向学习路线,助你避开99%小白踩坑!

本文揭示当前大模型Agent学习路线普遍顺序错误&#xff0c;建议反向学习&#xff1a;先理解底层机制&#xff08;动手写最小Agent&#xff09;&#xff0c;再掌握LangGraph流程建模&#xff08;重点StateGraph、条件边、Checkpointer&#xff09;&#xff0c;深入核心模块工程&…...

写论文用什么软件?精选7款AI论文生成工具深度测评,AI率精准控制无压力!

论文写作的痛点&#xff0c;AI工具来化解&#xff01; 面对开题报告、文献综述到正文撰写的全流程压力&#xff0c;选对AI论文写作工具能让效率提升数倍。本文将基于真实体验&#xff0c;为你深度测评7款主流工具&#xff0c;帮你找到最适合的学术助手。 测评围绕四大核心维度…...

如何用AntiMicroX解决PC游戏手柄兼容性问题:终极手柄映射工具完全指南

如何用AntiMicroX解决PC游戏手柄兼容性问题&#xff1a;终极手柄映射工具完全指南 【免费下载链接】antimicrox Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support. 项目地址: https://gi…...

如何通过智能包装系统提升全链条的数字化与协同效率?

本段聚焦全链条数字化升级的核心路径&#xff0c;通过 智能包装系统实现 原材料到成品的数据共享与流程对齐。以原材料入库、生产、成品出库为主线&#xff0c;建立统一的数据模型、模块化接口与可追溯闭环&#xff0c;推动 协同优化与成本控制。结合 中科天工智能包装设备与 中…...