RSA 属于非对称加密,核心特点:一对密钥(公钥、私钥);公钥公开、私钥自己保管。
两个核心用法:
公钥加密 → 私钥解密:用来加密小数据,实现保密传输
私钥签名 → 公钥验签:用来做身份认证、防篡改(RSA 最常用的场景其实是签名,而不是直接加密大文件)
⚠️ 重要限制:RSA 加密速度很慢、有明文长度上限,几乎不会直接加密大文件,业务上普遍是「RSA 加密对称密钥 + 对称算法(AES)加密真实数据」,也就是数字信封方案。
一、HTTPS / TLS(最普遍)
浏览器访问网站、APP 接口 HTTPS 都在用。 流程简化:
网站证书里带有 RSA 公钥(证书由 CA 签名)
客户端随机生成一个 AES 会话密钥
用网站 RSA 公钥加密这个 AES 密钥发给服务端
服务端用 RSA 私钥解密拿到 AES 密钥
后续全部业务数据走高速 AES 加密传输
现在 TLS 也大量换成 ECC,但 RSA 依然广泛兼容旧设备。
二、数字证书与 CA 体系
SSL 证书、代码签名证书、文档签名证书:
CA 用自己的 RSA 私钥给证书签名
客户端 / 系统用 CA 根证书里的 RSA 公钥校验签名,确认证书没被篡改、不是伪造的 应用:网站证书、内网 VPN 证书、AD 域证书。
三、软件代码签名(防篡改、证明发行方)
Windows 驱动、exe 安装包、Mac 应用、Android APK
开发者用 RSA 私钥对程序做签名
用户系统用公钥验签:确认程序发布者可信、文件传输中没有被病毒篡改
没有签名的驱动会被 Windows 拦截。
四、SSH 免密登录
SSH RSA 密钥登录:
本地生成 RSA 公私钥,把公钥放到服务器
authorized_keys连接时,服务器发随机挑战串
本地用私钥签名挑战串,服务器用公钥验证 作用:不用密码登录服务器,云服务器(阿里云、腾讯云、自建 Linux)非常常用。
五、电子签章、PDF / 文档签名
PDF 数字签名、电子合同:
签署方用 RSA 私钥对文档摘要签名
接收方验签:确认文档签署后没有被修改、确实是对方签的 和纸质公章不同:保障不可抵赖性。
六、API 接口鉴权、开放平台
很多开放平台(早期微信支付、第三方支付、政企开放接口):
请求方:用私钥对请求参数摘要做 RSA 签名,放到请求里
服务端:用对方公钥验签,判断请求是否合法、参数有没有被中间人篡改
区分:这是签名,不是加密;参数本身可以明文传,靠签名防篡改。 现在很多转向 SM2、ECC,但 RSA 存量巨大。
七、加密小敏感信息(少量数据)
比如:
传输密码、密钥、token 这类短敏感字段
❌ 不适合:图片、日志、大报文;RSA 加密长度有限,2048 位 RSA 最多加密 245 字节左右。 所以业务标准做法永远是数字信封。
八、加密邮件 S/MIME
Outlook 等客户端的加密邮件:
收件人公钥加密邮件的对称密钥,只有收件人私钥能解密阅读邮件内容。
九、区块链、身份认证(存量场景)
早期不少区块链账户、身份系统使用 RSA 签名;现在多数换成 ECDSA,但部分内部权限系统还在用 RSA 做身份验签。
补充:RSA 签名 vs RSA 加密,场景对比
常见误区
❌ 用 RSA 加密大文件:性能极差、长度不够,规范方案一定是数字信封(RSA 包 AES 密钥)
❌ RSA 用来做数据完整性校验:单独不行,RSA + 哈希(SHA256),也就是
RSA-SHA256❌ RSA 是绝对安全:密钥长度不够(1024 位 RSA 已经不安全),推荐至少 2048,优先 4096;也有量子计算风险,后量子密码正在逐步替代。