我有短消息(<=256 位)需要加密并发布为(HTTP URL)二维码以及公钥。由于 QR 要求,结果也应该保持 256 位长 - 使用方案、服务器名称和 base64 编码生成的 URL 已经有相当长的长度,因此 QR 很容易变得“太大”。
- 对于那个密钥大小,RSA 是不可能的。
- libsodium使用 ED25519提供
crypto_box
功能;但对于这些,我还需要传输随机数(24 个字节),结果是例如。48 字节——这使得二维码已经有点笨拙了。- 此外,每条消息使用一个(恒定)密钥对和另一个随机生成的密钥意味着还需要嵌入随机密钥,从而扩大结果
- 使用单个密钥对不起作用 - 如果我使用
sec1
and加密pub1
,我也需要准确发布这些值以进行解密。
- 所以我正在考虑使用普通的原始 ED25519 加密和解密。我需要注意 RSA(填充、坏键(如 pub exp 3))之类的陷阱吗?
我的计划是获取输入,对其进行 SHA256,使用哈希值将输入填充到 256 位,然后进行普通的 ED25519 加密。(我将在结果前添加一个键标记,以使键轮换成为可能。)
会出什么问题?毕竟,libsodium 的所有复杂性都必须有一个原因,对吧?
非常感谢您的帮助!