联调需要一组 RSA 测试密钥时,除了点击生成,还要确认位数符合页面要求、复制的是完整 PEM,以及公钥和私钥来自同一次生成。只保存屏幕上能看到的几行,或者把两个批次的结果混在一起,都会让后续导入难以排查。

本文现场生成一组 2048 位密钥,仅用于公开演示。截图中已经展示私钥内容,这组密钥应视为公开测试数据,不能用于生产签名、真实账号或证书部署。

位数填得进去,不代表能生成

在 IT 工具的加密工具分类中打开“RSA密钥对生成”。当前默认位数是 2048;页面标注范围为 256–16384,且须为 8 的倍数。

先把位数改为 2050,可以看到输入框变红,“生成密钥对”按钮变为禁用状态。这个值在显示的范围内,却不满足 8 的倍数要求,因此不能继续生成。

2050位输入框变红且生成按钮处于禁用状态
2050位输入框变红且生成按钮处于禁用状态

改回 2048 后再点击“生成密钥对”。等待公钥和私钥框都出现内容,再保存结果。不要因为按钮暂时没有变化就连续点击;先确认页面是否仍在生成,避免把不同批次的内容当成一组。

范围下限只是界面允许的输入边界,不能解释为所有可选位数都适用于真实安全用途。本例采用默认值是为了演示生成和保存流程,也不是对所有生产场景的位数建议。正式系统应遵循自己的算法和密钥管理要求。

公钥和私钥的标签不同

本次生成后,左侧“公钥”内容以这一行开头:

-----BEGIN PUBLIC KEY-----

右侧“私钥”以另一种标签开头:

-----BEGIN RSA PRIVATE KEY-----

两者不是可以互换的同一段内容。公钥可以按联调协议交给使用方;私钥用于需要持有者秘密完成的操作,应由测试环境中指定的一方保管。

2048位生成结果分别显示公钥与RSA私钥的PEM开头
2048位生成结果分别显示公钥与RSA私钥的PEM开头

PEM 是一种文本封装。开头、结尾的标签与中间编码内容共同构成完整数据。文件扩展名即使都叫 .pem,内部也可能分别是公钥、私钥或证书,不能仅凭扩展名判断类型。这里产生的是密钥对,页面没有生成证书、证书请求或 SSH 登录配置。

复制完整内容,不按截图抄写

分别点击公钥区和私钥区的“复制”,保存到两个独立的测试文件中,例如 demo-public.pem 与 demo-private.pem。这两个名字只是便于识别,应用是否接受它们仍要看导入接口。

长私钥在框内需要滚动才能看到结尾。本次滚动到下方,结尾为:

-----END RSA PRIVATE KEY-----
滚动私钥结果框可看到完整PEM结束标签
滚动私钥结果框可看到完整PEM结束标签

不要只复制框内当前可见的行,也不要为压成一行删除标签或内容。保存后先检查 BEGIN 与 END 标签对应,再在本地测试程序中导入。部分接口要求特定密钥结构,例如 PKCS#1 或 PKCS#8;改文件后缀、手动改标签文字都不能完成结构转换。

如果把 PEM 放进 JSON 配置,文本里的换行还会涉及 JSON 字符串转义。应按应用要求保存真实换行或 \n 表示,别把“屏幕上看起来换行了”直接当成程序收到的内容。

怎样确认两份文件是一对

本次将页面生成的两份测试 PEM 交给本地密码库解析,公钥的模数长度为 2048 位;从私钥推导出的公钥与页面公钥一致。这个检查能发现误把不同批次的公私钥混用,比只比较两份文本是不是都以 BEGIN 开头更可靠。

实际联调时,也可以在隔离测试环境完成一轮协议要求的签名与验签,或者加密与解密。必须选用对端要求的方案和参数,不能把页面“生成成功”当成特定协议已经验证通过。

重新生成后,保存时要把公钥和私钥作为同一批次处理,并给测试文件记录生成时间或批次名。本次文章中的私钥已经公开,读者只应用它识别格式,不应直接复制到实际业务中。