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 攻击,保护后端资源和控制成本。
相关推荐
奔跑中的小象6 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南6 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang7 小时前
LangGraph 状态机实战
人工智能
刹那芳华19927 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作7 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门7 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜7 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟7 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦7 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生8 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能