Uvlio

Command Palette

Search for a command to run...

返回文章列表
技术文章

RSA 密钥解释:加密、签名、填充与私钥安全

RSA 是经典公钥密码系统之一。它适合学习,因为能清楚展示公钥和私钥的角色:一边可以分享,另一边必须保护。但真实 RSA 使用远比“公钥加密、私钥解密”复杂,填充、签名、混合加密、密钥长度、存储和验证规则都会影响安全性。
limitcool 维护的 Uvlio 编辑团队2026-05-177 分钟阅读
主题封面开发工具RSAPublic Key

RSA 密钥解释:加密、签名、填充与私钥安全

解释 RSA 公私钥、为什么填充重要、签名和加密的区别,以及为什么演示不等于密钥管理。

文章主题预览
BEGIN PUBLIC KEY
encrypt short sample only
keep private key local
关联工具
RSA 密钥工具
阅读重点
1理解原理
2检查边界
3使用工具

原创流程图

RSA 密钥解释:加密、签名、填充与私钥安全

这张图由 Uvlio 为本文工作流生成,用来说明从输入检查到输出判断的基本路径。
1

理解原理

检查后再进入下一步

2

检查边界

检查后再进入下一步

3

使用工具

检查后再进入下一步

维护与复核
维护者:limitcool。阅读时可重点关注技术原理、处理边界、隐私风险和可验证事实。
公钥和私钥有配对角色

RSA 密钥对包含可分发的公钥和必须保密的私钥。在加密流程里,别人用公钥为私钥持有者加密短消息;在签名流程里,私钥持有者签名,其他人用公钥验证。前者解决保密性,后者解决真实性和完整性。

签名不是加密

签名证明数据由持有私钥的一方签出,且签名内容未被修改,但它不隐藏数据。加密隐藏数据,但不自动证明消息由谁创建。阅读加密流程时,应先问需求是保密、完整性、身份,还是几者组合。

填充是安全设计的一部分

应用层不应直接使用裸 RSA 数学运算。安全方案会使用 OAEP 加密填充或 PSS 签名填充。填充能防止结构性攻击,让重复操作更安全。如果示例没有解释填充,应把它当学习工具,而不是生产方案。

RSA 通常参与混合加密

RSA 通常不直接加密大文件。常见设计是生成随机对称密钥,用对称算法加密大内容,再用 RSA 保护这个对称密钥。这样更快,也符合 RSA 大小限制。声称直接 RSA 加密长文档的流程需要仔细检查。

私钥存储才是难点

生成密钥很容易,长期保护私钥才困难。私钥不应粘贴到随机网页、提交到仓库、放进工单或明文留在共享机器。生产系统通常需要密钥管理、访问控制、备份、轮换、审计和事故流程。

密钥长度和算法会过时

密码学建议会随算力、攻击和标准变化。日常开发者应依赖当前平台指南和维护中的库,不要自造协议。选择标准算法、标准填充、清晰消息格式,并让验证在异常时安全失败。

安全学习流程

学习时使用临时密钥和无害消息。加密一段短文本再解密,签名一段消息再验证,然后故意修改消息观察验证失败。这样能理解角色,又不会暴露真实秘密。进入生产后,应使用成熟库和受控密钥存储。

常见问题

RSA 能直接加密大型 PDF 吗?

正常安全设计不会这样做。RSA 通常保护对称密钥,文件本身用对称算法加密。

公钥需要保密吗?

不需要。公钥设计上就是可分享的,私钥必须保护。

可以把生产私钥粘到浏览器工具里吗?

不可以。学习用合成密钥,真实系统用受控密钥管理。

为什么示例里的 RSA 看起来很简单?

教学示例常省略密钥存储、填充、证书链、随机数和轮换,只为展示核心概念。

如何区分签名和加密?

需要保密时用加密;需要证明来源和未被修改时用签名。

签名测试里什么应该失败?

验证成功后改动消息任意一个字节,验证应失败。

RSA 示例能直接复制进应用吗?

不能。浏览器示例只用于理解概念,生产代码应使用维护中的密码学库和审查过的协议。