RSA2 非对称加密签名

核心逻辑:

后端(持有私钥):生成签名。

前端(持有公钥):只负责验证签名(确保数据没被篡改)+ 发送请求。

后端(接收请求):再次校验签名(防篡改)。

注意 :对于流式接口,通常我们采用**"后端生成临时令牌"** 的模式。

前端先调一个普通接口拿令牌(令牌里包含了后端签名的数据),前端验证通过后,带着令牌去调流式接口。

第一步:生成密钥对

你需要生成一对 RSA 密钥(建议使用 2048 位或 4096 位)。

可以使用在线工具或 OpenSSL 生成:

  • 私钥 (Private Key)绝密,只放在后端代码或配置中心里。
  • 公钥 (Public Key):公开,放在前端代码里。

1. 如何生成 RSA 密钥对

最标准、最安全的方法是使用 OpenSSL 工具(Windows/Mac/Linux 均可使用)。如果你没有安装 OpenSSL,也可以使用在线生成工具(但要注意安全风险,建议仅用于测试)。

方法一:使用 OpenSSL 命令行(推荐,最安全)

打开你的终端(Terminal)或命令行工具,依次执行以下命令:

第一步:生成私钥 (2048位)

这是你的核心机密,千万不要泄露。

2. 这种密钥会过期吗?

答案是:会,也不全都会。

我们需要区分两个概念:"算法失效""密钥轮换"

A. 算法失效(长期风险)

随着计算机算力的提升(特别是量子计算的发展),曾经安全的密钥长度会变得不安全。

  • 1024位:已不再安全,容易被破解。
  • 2048位 :目前的行业标准,预计安全期至少到 2030年
  • 4096位:更安全,但计算速度稍慢,适合极高安全要求的场景。

结论:你生成的 2048 位密钥,在未来 5-10 年内是安全的。

B. 密钥轮换(运营风险)

即使密钥本身没有破解风险,你也应该定期更换它。原因如下:

  1. 防止私钥泄露:万一你的服务器被黑了,或者代码库泄露了,黑客拿到了私钥,他就可以伪造所有请求。定期换密钥可以将损失降到最低。
  2. 业务隔离:比如"2024年第一季度密钥",过期作废,方便管理。

建议的轮换周期

  • 普通业务 :每 1年 更换一次。
  • 高敏感业务(涉及支付) :每 3-6个月 更换一次,或者一旦发现有任何泄露风险立即更换。

sudo yum install openssl -y

openssl genrsa -out private_key.pem 2048

利用刚才生成的私钥,提取出公钥

openssl rsa -in private_key.pem -pubout -out public_key.pem

1. 获取私钥(放在后端配置里):

cat private_key.pem

chmod 600 private_key.pem (安全权限:建议把私钥权限设为只有你能读,防止服务器上其他人偷看)

2. 获取公钥(放在前端代码里):

cat public_key.pem


  1. 通信安全 :强制使用 HTTPS (TLS) 进行全链路加密,防止网络嗅探。
  2. 身份认证 :采用 JWTAPI Key 机制,验证请求发起方的合法身份。
  3. 数据完整性与来源校验 :采用 RSA-SHA256 数字签名。客户端将业务参数、时间戳、随机数和身份凭证拼接后,使用私钥生成签名,服务端用公钥验签,确保数据未被篡改且来源可信。
  4. 防重放攻击
    • 时效性校验 :请求携带 Timestamp,服务端拒绝处理超过有效窗口(如5分钟)的请求。
    • 唯一性校验 :请求携带 Nonce,服务端在有效期内(如5分钟)通过 Redis 校验其唯一性,防止请求被重复提交。
  5. 敏感数据保护 :对金额、密码等核心敏感字段,采用 AES+RSA 混合加密模式,在保证安全的同时兼顾性能。
  6. 访问控制 :实施 限流 (Rate Limiting) 策略,防止接口被滥用或遭受 DDoS 攻击,保护后端资源和控制成本。
相关推荐
海兰3 小时前
【文字三国志:第一篇】天命重构,大语言模型(LLM)动态生成文言风格的叙事文本的文字游戏
人工智能·游戏·语言模型
cxr8283 小时前
高分子复合材料 AI 逆向设计合——验证闭环、决策优化与中试放大
人工智能·材料逆向设计合成
litble3 小时前
如何速成LLM以伪装成一个AI研究者(6)——LoRA,Adapter,P-tuning,量化,QLoRA
人工智能·lora·量化·peft·qlora·高效微调
开发者每周简报3 小时前
网海三部曲·无名宗师传
javascript·人工智能
卷毛的技术笔记4 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
Cosolar4 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
ai_xiaogui4 小时前
PanelAI:新一代AI算力调度系统,支持本地大模型一键部署与商业运营
人工智能·panelai·panelai算力调度系统·本地大模型一键部署平台·ai应用市场管理面板·企业级部署·2026本地ai私有化解决方案
冬奇Lab4 小时前
Agent 系列(9):多 Agent 架构设计模式——Supervisor 与 Pipeline
人工智能·源码·agent
冬奇Lab4 小时前
每日一个开源项目(第118篇):SkillOpt - 像训练神经网络一样优化 LLM Agent 的技能
人工智能·开源·agent