# 用户 API 密钥应使用 OAEP 填充

**URL:** <https://meta.discourse.org/t/user-api-keys-should-use-oaep-padding/354056>\
**Category:** Feature\
**Tags:** user-api\
**Created:** [2024年六月1日 07:00 UTC](https://meta.discourse.org/t/user-api-keys-should-use-oaep-padding/354056 "2024-06-01T07:00:36Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)\
**Post date:** [2025年二月24日 22:09 UTC](https://meta.discourse.org/t/user-api-keys-should-use-oaep-padding/354056/8 "2025-02-24T22:09:13Z")

</div>

> [@simon](#):
>
> 不幸的是，Node v20.14.0（当前的 LTS 版本）在尝试使用 `RSA_PKCS1_PADDING` 调用 `crypto.privateDecrypt` 时会返回错误：

我刚来，但那个错误似乎不正确。这不是 Node 中被移除的功能，而是某些 OpenSSL 安装的问题。根据 [Node 文档](https://nodejs.org/api/crypto.html#cryptoprivatedecryptprivatekey-buffer)：

```plaintext
在 crypto.privateDecrypt() 中使用 crypto.constants.RSA_PKCS1_PADDING 需要 OpenSSL 支持隐式拒绝（rsa_pkcs1_implicit_rejection）。

```

另请参阅 [[Bug]: RSA\_PKCS1\_PADDING is no longer supported for private decryption · Issue #487 · bropat/eufy-security-client · GitHub](https://github.com/bropat/eufy-security-client/issues/487#issuecomment-2048995565)

我在本地测试，这对我来说是有效的：[An example of RSA Encryption implemented in Node.js · GitHub](https://gist.github.com/sohamkamani/b14a9053551dbe59c39f83e25c829ea7?permalink_comment_id=3968741) 即使我切换到为加密和解密都使用 `crypto.constants.RSA_PKCS1_PADDING` 作为填充。我使用的是 OpenSSL 3.4.0 和 Node 23.6.1。

> [@mqmenchaca](#):
>
> 这似乎是一个相当简单的添加？

使用站点设置的棘手之处在于，客户端将不知道特定实例支持哪种填充。这使得跨实例/服务的兼容性更难理解。

我认为我们应该澄清现有实现，即明确指出我们正在使用 `RSA_PKCS1_PADDING`，然后再考虑升级。也许我们需要为该端点引入版本控制，以便客户端可以在 said 版本之前/之后方便地使用正确的填充。

---

_[View the full topic](https://meta.discourse.org/t/user-api-keys-should-use-oaep-padding/354056)._
