# @dotrino/opaque 中文文档

规范地址：https://npmcn.com/package/%40dotrino/opaque/

版本：0\.1\.1
npm 元数据更新时间：2026-11-05T14:10:24.953Z
中文译文更新时间：2026-11-12T22:00:12.385Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dotrino/opaque
原文对照：https://npmcn.com/package/%40dotrino/opaque/?lang=original
项目主页：https://github.com/imdotrino/dotrino-opaque#readme
源码仓库：https://github.com/imdotrino/dotrino-opaque

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：308 kB，8 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-09-17T17:33:20.151Z
- 最新版本发布：2026-11-05T14:10:24.481Z
- 近 30 天下载量：4270（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

多特里诺生态系统的OPAQUE(RFC 9807):在服务器从未看到的情况下检查密码. 在CI中不透明编译到WASM.

## 安装

```sh
npm install @dotrino/opaque
```

也可以使用：`pnpm add @dotrino/opaque`、`yarn add @dotrino/opaque`、`bun add @dotrino/opaque`

## README

# @ dotrino/ 不公开

**康普罗巴尔 una contraseña sin que el servidor la vea nunica**\# 罪人恳求爱人 # (原始内容存档于2018-10-25). con qué adivinarla desde fuera. 政务厅[RFC 9807 (韩语)](https://www.rfc-editor.org/rfc/rfc9807.html)(中文(简体) ) 经济、社会和文化权利 [多春诺](https://dotrino.com/)麻省理工学院.

人民日报 人民日报 人民日报 人民日报 人民日报 反《公约》条款,第6段 **aparato que se abre conusuario 和 contraseña (英语:** (单位:千美元)[`dotrino-passmanager/docs/temporary-access.md`](https://npmcn.com/package/%40dotrino/dotrino-passmanager/docs/temporary-access.md)) (中文(简体) ).

## 干草地穴,没有

-   **没有干草干草干草干草干草干草干草干草干草干草干草干草干草.** 埃尔平面图 [`opaque-ke`](https://github.com/facebook/opaque-ke) 4.0.1 (Meta, 审计ado por NCC Group en 2021), compilado a WASM (英语: **圣多明会** (原始内容存档于2018-10-21). en nuestro CI. Este paquete fija la house, 爱斯特·派克特·菲亚·拉 套房, 不烦恼出场.
-   **《联合提交的材料》** (单位:千美元)`build/wasm-bytes.js`(原始内容存档于2018-10-21) (英语). porque el mark se distribuye como {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}没有车厢 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}没有车厢 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}没有车厢.
-   **套房费雅:** ristretto255 + SHA-512 + 3DH, con Argon2id a 64 MiB, 3相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 (la segunda recompación del RFC 9106; la primera, 2 GiB, no Cabe en un navegador). 昆明植物研究所. 输 埃斯克里亚省 `wasm/src/lib.rs`不要叛逃到自由之地: (原始内容存档于2017-03-29). combiarlos combia los registros guardados. `suiteId()` 洛斯诺姆布拉.

## 乌苏

Todo entra y selly en base64url. 中国植物物种信息数据库.

```js
import { client, server } from '@dotrino/opaque'

// Una vez por bóveda. SECRETA.
const setup = server.createSetup()

// Registro
const r1 = client.registrationStart({ password })
const response = server.registrationResponse({ setup, request: r1.request, credentialId: 'ana' })
const r2 = client.registrationFinish({ state: r1.state, response, password, identifiers })
const record = server.registrationFinish({ upload: r2.upload })        // lo que se guarda
// r2.exportKey solo sale de la contraseña: con ella se cifran las llaves del aparato.

// Inicio de sesión
const l1 = client.loginStart({ password })
const s1 = server.loginStart({ setup, record /* o null */, request: l1.request, credentialId: 'ana', identifiers })
const l2 = client.loginFinish({ state: l1.state, response: s1.response, password, identifiers })
const s2 = server.loginFinish({ state: s1.state, finalization: l2.finalization, identifiers })
// l2.sessionKey === s2.sessionKey, y l2.exportKey === r2.exportKey
```

-   **`record: null`** 不存在:a respuesta es igul por fuera y falla ig. Omitirlo es 未出错 (`bad-input`),没有"不存在" por fecto.
-   **`identifiers`** (单位:千美元)`{ client, server }`se atan al intercambio; si las dos puntas no pasan (英语: 洛斯·米斯摩斯(英语:los mismos), falla como un a contraseña quavocada. 中国植物物种信息数据库.

## 错误

`OpaqueError` 错误 `code`数字 :

| `code` | 坎多语Name |
| --- | --- |
| `login-failed` | 反正 假说 假说 假说 **宣传片** |
| `bad-input` | 法尔塔不达多,没有自己 puede leer |
| `protocol` | 缩写 : |
| `internal` | 不堕落不堕入正轨 |

## 爱爱爱爱爱爱爱爱爱爱爱爱爱爱爱爱

-   红花花相接 **无相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相**。 。 。 .
-   奎恩领带 **预备役和预备役** (法语) **普埃德·普瓦德·查克塞尼亚斯·辛·利米特**(原始内容存档于2018-03-21). Cada ententio cuesta el Argon2 de arriba: medido, 无效 **100分钟** (原始内容存档于2018-03-29) (英语). por intento en Node con Este WASM. 无人能及的硬件 兰皮多 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}是的 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}是的 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}是的.

## 发展

涅塞西塔·鲁斯特(英语:Lo fija) `wasm/rust-toolchain.toml`页:1 `wasm-bindgen-cli` 错失爱意 尔克特:

```bash
cargo install wasm-bindgen-cli --version 0.2.100 --locked
npm run build          # WASM → build/
npm test               # la API, los errores y el registro v1 fijado
npm run test:vectors   # los vectores del RFC 9807 contra opaque-ke 4.0.1
```

**《可复制的汇编》**数字 : `npm run build` 圣母玛利亚 que CI (英语:`build/wasm.sha256`· ; `a5a80de4…` 第0.1.0段;波克语 `scripts/build.mjs` 重写 (原始内容存档于2019-03-29). las rutas absolutas y el compiladoor está fijado. 公开销售 (原始内容存档于2018-10-21). este fuente.

`test/fixtures/v1.json` (原始内容存档于2019-01-30). es un registro guardado con la 0.1. **托达会长 领带 que abrirlo**: un registro que deja de abrir deja a alguien sin entrar. 中国植物物种信息数据库.

公开 **脱口秀** 骗取标签 `vX.Y.Z` (单位:千美元)`.github/workflows/release.yml`), Con el SBOM, la (英语) (原始内容存档于2018-03-27). Pressedencia y la huella del WASM en la lea release. 农卡 `npm publish` 一个马诺.

## 我们的文件

维基文库中相关的原始文献: Está en el wiki: [https://wiki.dotrino.com/desarrollo/pilares/ 互联网档案馆的存檔,存档日期2013-12-21](https://wiki.dotrino.com/desarrollo/pilares/)

## 常见问题

### @dotrino/opaque 是什么？

多特里诺生态系统的OPAQUE\(RFC 9807\):在服务器从未看到的情况下检查密码\. 在CI中不透明编译到WASM\.

### 如何安装 @dotrino/opaque？

在项目目录运行 npm install @dotrino/opaque，或使用 pnpm add / yarn add / bun add。

### @dotrino/opaque 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/dotrino\_\_opaque 是否存在。

### @dotrino/opaque 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @dotrino/opaque 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @dotrino/opaque 可以商用吗？

@dotrino/opaque 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dotrino/opaque 的下载量有多少？

根据 npm 官方下载统计，@dotrino/opaque 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,270 次，日均约 142 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dotrino/opaque 还在维护吗？

最新版本 0\.1\.1 发布于 2026/11/05（8 天前）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/09/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

