选择操作前,先区分加密与签名
RSA 加密用于让匹配私钥的持有者读取短明文:使用接收方公钥加密,再使用该接收方私钥解密。它不能证明消息由谁创建。RSA 签名回答的是另一问题:用私钥对完全相同的消息签名,再用匹配公钥验证签名与消息。签名有效并不会隐藏消息内容。
请先写清目标:保护短文本、检查签名互操作性,还是测试密钥对格式。不要把签名当作加密替代,也不要把加密当作发送方验证。
保持公钥与私钥的边界
工具生成 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,例如保护一个较小的密钥或测试既有集成。该工具最适合小型兼容性检查,不适合批量数据处理。
执行可复现的非敏感测试
生成 2048、3072 或 4096 位测试密钥对,不要将私钥或敏感文本保存在共享位置,并从简单测试消息开始。用公钥加密,再用匹配私钥和同一填充方式解密。签名时,对完全相同的消息签名,并用匹配公钥和同一签名算法立即验证。
只记录另一位开发者复现安全测试所需的信息:密钥长度、公钥格式、填充或签名算法、编码方式和已脱敏的错误类别。完成后销毁测试密钥对。若误提交真实生产私钥或秘密,请按所属系统的事件与密钥轮换流程处理。
常见问题
可以用公钥解密消息吗?
不可以。在此加密流程中,公钥用于加密,匹配私钥用于解密;使用公钥验签是另一项操作。
文本低于表单上限,为什么仍加密失败?
RSA 可用字节数还受密钥长度和填充方式限制。请尝试短得多的测试消息,并检查公钥和填充选择。
签名有效是否代表消息保密?
不代表。签名用于支持完整性和基于密钥的验证,不会加密或隐藏消息。