如何在不进行模数检查的情况下确定 public 密钥属于私钥(RSA)?

How to be sure that public key belongs to private key (RSA) without modulus check?

我正在使用 Node.js 生成 RSA 密钥对,它们都存储在数据库中(私钥是 AES 加密的)。

我想检查解密的私钥是否与public密钥匹配,以确保public密钥在静止时未被replaced/tampered。

我发现无法通过 Node.js API 获得密钥模数。

如果我简单地加密随机消息并在解密时得到原始消息,可以吗?

我只是想知道这是否安全,我真的不在乎它是否慢或不是最优的。

有没有什么方法可以在没有任何外部库的情况下做到这一点?

我也不想直接从节点使用 openssl CLI。

非常感谢。

通常我们会在一些已知消息上创建签名并验证(即使是在空八位字节字符串上),但加密/解密也可以。可能最好确保您使用密钥 最初用于 的操作 请确保您不签署或加密可能被对手使用的消息 and/or不要泄露结果。

不可能使用功能不等同的不同私钥。但是可能仍然存在差异,例如私钥可以包含使用该私有指数(普通 RSA)直接取幂的私有指数,或者它可以包含用于中国剩余定理的密钥生成参数。在那种情况下,它不需要私有指数。