我刚来,但那个错误似乎不正确。这不是 Node 中被移除的功能,而是某些 OpenSSL 安装的问题。根据 Node 文档:
在 crypto.privateDecrypt() 中使用 crypto.constants.RSA_PKCS1_PADDING 需要 OpenSSL 支持隐式拒绝(rsa_pkcs1_implicit_rejection)。
我在本地测试,这对我来说是有效的:An example of RSA Encryption implemented in Node.js · GitHub 即使我切换到为加密和解密都使用 crypto.constants.RSA_PKCS1_PADDING 作为填充。我使用的是 OpenSSL 3.4.0 和 Node 23.6.1。
使用站点设置的棘手之处在于,客户端将不知道特定实例支持哪种填充。这使得跨实例/服务的兼容性更难理解。
我认为我们应该澄清现有实现,即明确指出我们正在使用 RSA_PKCS1_PADDING,然后再考虑升级。也许我们需要为该端点引入版本控制,以便客户端可以在 said 版本之前/之后方便地使用正确的填充。