MV Tools

真实 RSA 加密与签名核验

如何使用 RSA 加密与签名,并明确公钥和私钥边界

一套实用流程:测试 RSA 加密、解密、签名和验签时,不混淆公钥与私钥,也不把一次成功测试当成生产密钥管理。

MV Tools 编辑团队更新于 约 8 分钟阅读

打开工具

选择操作前,先区分加密与签名

RSA 加密用于让匹配私钥的持有者读取短明文:使用接收方公钥加密,再使用该接收方私钥解密。它不能证明消息由谁创建。RSA 签名回答的是另一问题:用私钥对完全相同的消息签名,再用匹配公钥验证签名与消息。签名有效并不会隐藏消息内容。

请先写清目标:保护短文本、检查签名互操作性,还是测试密钥对格式。不要把签名当作加密替代,也不要把加密当作发送方验证。

密文来自一次性 RSA-2048 密钥对的真实结果;公钥已遮盖以突出密钥边界。
密文来自一次性 RSA-2048 密钥对的真实结果;公钥已遮盖以突出密钥边界。

保持公钥与私钥的边界

工具生成 PEM 编码的 SubjectPublicKeyInfo 公钥和 PEM 编码的 PKCS#8 私钥。公钥可提供给预期的验证方或发送方;私钥必须由其所有者控制。绝不要把私钥粘贴进工单、聊天、代码示例、截图、浏览器书签或共享明文文件。

密钥生成、加密、解密、签名和验签都会发起服务端请求。工具说明请求输入不会存储或写入日志,但它仍不是受控的生产密钥管理系统。除非已有获批准的生成、保护、轮换和吊销流程,否则生成的密钥只用于实验。

测试私钥只用于本次请求,从未保存到任何指南资源。
测试私钥只用于本次请求,从未保存到任何指南资源。

精确匹配填充方式和算法

加密可选择 OAEP SHA-256、OAEP SHA-1 和 PKCS#1 v1.5,工具默认 OAEP SHA-256。对方系统支持时应从默认项开始;只有既有兼容系统明确要求时才选 OAEP SHA-1 或 PKCS#1 v1.5。加密与解密必须使用同一密钥对和同一填充方式。

签名两端必须使用同一项 SHA256withRSA、SHA384withRSA 或 SHA512withRSA。验签对字节敏感:一个字符、换行、编码、空白变化或算法不同都会导致失败。请保存规范化的 UTF-8 测试文本,并与签名一起记录参数。

验签确认完全相同的消息和所选算法;它不会加密消息。
验签确认完全相同的消息和所选算法;它不会加密消息。

RSA 加密只适用于短载荷

界面用于短文本,API 将加密文本请求校验为最多 2,000 个字符;但 RSA 实际可加密的字节数会受密钥长度和填充方式限制,且远小于这个表单上限。因此文本可能通过表单检查仍返回加密失败。先用很短的 ASCII 或 UTF-8 样例测试;多字节字符会占用更多字节。

RSA 不是大文件加密格式,也不是通用文档保险箱。应用设计中应使用专门的数据加密方案处理数据,并只在协议需要时使用 RSA,例如保护一个较小的密钥或测试既有集成。该工具最适合小型兼容性检查,不适合批量数据处理。

密文来自一次性 RSA-2048 密钥对的真实结果;公钥已遮盖以突出密钥边界。
密文来自一次性 RSA-2048 密钥对的真实结果;公钥已遮盖以突出密钥边界。

执行可复现的非敏感测试

生成 2048、3072 或 4096 位测试密钥对,不要将私钥或敏感文本保存在共享位置,并从简单测试消息开始。用公钥加密,再用匹配私钥和同一填充方式解密。签名时,对完全相同的消息签名,并用匹配公钥和同一签名算法立即验证。

只记录另一位开发者复现安全测试所需的信息:密钥长度、公钥格式、填充或签名算法、编码方式和已脱敏的错误类别。完成后销毁测试密钥对。若误提交真实生产私钥或秘密,请按所属系统的事件与密钥轮换流程处理。

验签确认完全相同的消息和所选算法;它不会加密消息。
验签确认完全相同的消息和所选算法;它不会加密消息。

常见问题

可以用公钥解密消息吗?

不可以。在此加密流程中,公钥用于加密,匹配私钥用于解密;使用公钥验签是另一项操作。

文本低于表单上限,为什么仍加密失败?

RSA 可用字节数还受密钥长度和填充方式限制。请尝试短得多的测试消息,并检查公钥和填充选择。

签名有效是否代表消息保密?

不代表。签名用于支持完整性和基于密钥的验证,不会加密或隐藏消息。