# @digitalcredentials/ed25519-multikey 中文文档

规范地址：https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/

版本：1\.4\.0
npm 元数据更新时间：2026-09-30T17:46:16.255Z
中文译文更新时间：2026-11-12T08:52:56.687Z
软件包许可：未声明

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

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

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

- 包体积（解压后）：34.1 kB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=16
- 运行依赖：4 个
- 首次发布：2025-02-05T23:49:35.495Z
- 最新版本发布：2025-04-30T14:36:19.479Z
- 近 30 天下载量：11506（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

Javascript库用于生成并和Ed25519多键键对合作.

## 安装

```sh
npm install @digitalcredentials/ed25519-multikey
```

也可以使用：`pnpm add @digitalcredentials/ed25519-multikey`、`yarn add @digitalcredentials/ed25519-multikey`、`bun add @digitalcredentials/ed25519-multikey`

## README

# Ed25519 链接数据多键配对库 _(@ 数字证书/ ed25519- multikey)_

[![NPM Version](https://img.shields.io/npm/v/@digitalcredentials/ed25519-multikey.svg)](https://npm.im/@digitalcredentials/ed25519-multikey)

> Javascript库用于生成并和Ed25519多键键对合作.

注:这是叉子 [`@digitalbazaar/ed25519-multikey`](https://github.com/digitalbazaar/ed25519-multikey) 添加对本地反应的支持。 唯一的根本变化是加上这个 [反应本地覆盖](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/lib/ed25519-reactnative.js) 用于 [@noble/ed25519 (英语)](https://www.npmjs.com/package/@noble/ed25519) 用于在本地反应中加密.

## 目录

-   [背景情况](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-background)
-   [警卫](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-security)
-   [安装](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-install)
-   [使用量](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-usage)
-   [贡献](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-contribute)
-   [许可证](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/#readme-license)

## 背景情况

用于:

-   [`@digitalcredentials/eddsa-2022-cryptosuite`](https://github.com/digitalcredentials/eddsa-2022-cryptosuite) `^1.0.0` 密码套件( 有 [`jsonld-signatures`](https://github.com/digitalcredentials/jsonld-signatures) `^11.0.0`(中文(简体) )
-   [`@digitalcredentials/data-integrity`](https://github.com/digitalcredentials/data-integrity) `^1.0.0`

另见(相关规格):

-   [可验证的可信数据完整性](https://w3c.github.io/vc-data-integrity/)

## 警卫

同大多数与安全和密码学有关的工具一样 您的系统将在很大程度上取决于您的设计决定 .

## 安装

-   需要节点.js 16+.

在当地安装(用于开发):

```
git clone https://github.com/digitalbazaar/ed25519-multikey.git
cd ed25519-multikey
npm install
```

## 使用量

### 生成新的公密密钥配对

要生成一个新的公密密钥配对 :

-   `{string} [id]` 生成的密钥的可选代号 .
-   `{string} [controller]` 可选控制器 URI 或 Did 初始化 生成了密钥。 (此会输入密钥 ID. )
-   `{string} [seed]` 可选的确定种子值,用于生成 键.

```js
import * as Ed25519Multikey from '@digitalbazaar/ed25519-multikey';

const edKeyPair = await Ed25519Multikey.generate();
```

### 从存储导入一对密钥

从下列来源导入的数据创建公用/保密密钥对实例: 存储,使用 `.from()`数字 :

```js
const serializedKeyPair = { ... };

const keyPair = await Ed25519Multikey.from(serializedKeyPair);
```

### 只导出公钥

要导出一对的公钥 :

```js
await keyPair.export({publicKey: true});
// ->
{
  type: 'Multikey',
  id: 'did:example:1234#z6Mkon3Necd6NkkyfoGoHxid2znGc59LU3K7mubaRcFbLfLX',
  controller: 'did:example:1234',
  publicKeyMultibase: 'z6Mkon3Necd6NkkyfoGoHxid2znGc59LU3K7mubaRcFbLfLX'
}
```

### 导出完整的公密密钥配对

要导出完整的密钥配对, 包括密钥( 警告 : 这应该是 仔细考虑的操作,最好留给专用密钥管理系统:

```js
await keyPair.export({publicKey: true, secretKey: true});
// ->
{
  type: 'Multikey',
  id: 'did:example:1234#z6Mkon3Necd6NkkyfoGoHxid2znGc59LU3K7mubaRcFbLfLX',
  controller: 'did:example:1234',
  publicKeyMultibase: 'z6Mkon3Necd6NkkyfoGoHxid2znGc59LU3K7mubaRcFbLfLX',
  secretKeyMultibase: 'zruzf4Y29hDp7vLoV3NWzuymGMTtJcQfttAWzESod4wV2fbPvEp4XtzGp2VWwQSQAXMxDyqrnVurYg2sBiqiu1FHDDM'
}
```

### 创建签名函数

为了执行加密签名,您需要创建 `sign` 函数,然后引用它.

```js
const keyPair = Ed25519Multikey.generate();

const {sign} = keyPair.signer();

// data is a Uint8Array of bytes
const data = (new TextEncoder()).encode('test data goes here');
// Signing also outputs a Uint8Array, which you can serialize to text etc.
const signatureValueBytes = await sign({data});
```

### 创建验证函数

为了验证密码签名,您需要创建 `verify` 函数,然后引用它(通过数据验证,和签名).

```js
const keyPair = Ed25519Multikey.generate();

const {verify} = keyPair.verifier();

const valid = await verify({data, signature});
// true
```

### 从以前的 Ed25519 验证Key2020 密钥类型转换

如果您已经序列化并存储了上一个密钥 `Ed25519VerificationKey2020` 密钥类型(例如,使用 页:1 [`ed25519-verification-key-2020`](https://github.com/digitalcredentials/ed25519-verification-key-2020)(中文(简体) ) 图书馆,需要记住的事情:

-   这些关键类型的实例仍然包含同样的关键材料,即: 从2020年套房改为多键的东西是属性名 更改用于存储密钥并替换类型 `Multikey`。 。 。 . 2020年套房密钥类型使用该类型序列化 `Ed25519VerificationKey2020` 并存储在 `privateKeyMultibase`,以及Ed25519号 Multikey( 此重播) 使用相应的类型序列化 `Multikey` a 一个 将密钥材料存储在 `secretKeyMultibase` 属性.
-   您可以使用提供的 2020 密钥类型转换为 Multikey `Ed25519Multikey.from()` 方法(见下文).
-   他们 `generate()` 相同的关键材料,考虑到相同的 `seed` 参数.
-   2020和Multikey键都产生并验证了同一种签名.

转换示例:

```js
import * as Ed25519Multikey from '@digitalcredentials/ed25519-multikey';
import {Ed25519VerificationKey2020}
  from '@digitalbazaar/ed25519-verification-key-2020';


const keyPair2020 = await Ed25519VerificationKey2020.generate({
  controller: 'did:example:1234'
});

const ed25519Multikey = await Ed25519Multikey.from(keyPair2020);

// The resulting ed25519Multikey will have the same `id` and `controller` properties
// as its 2020 source. They will also produce and verify the same signatures.

// data is a Uint8Array of bytes
const data = (new TextEncoder()).encode('test data goes here');
const signatureBytes2020 = await keyPair2020.signer().sign({data});

// this is the same signature as that produced by the 2020 key. And will verify
// the same.
await ed25519Multikey.verifier().verify({data, signature: signatureBytes2020})
// true
```

### 从先前的 Ed25519 验证Key2018 密钥类型转换

如果您已经序列化并存储了上一个密钥 `Ed25519VerificationKey2018` 密钥类型(例如,使用 页:1 [`ed25519-verification-key-2018`](https://github.com/digitalbazaar/ed25519-verification-key-2018)(中文(简体) ) 图书馆,需要记住的事情:

-   这些关键类型的实例仍然包含同样的关键材料,即: 从2018套房到Multikey的改变 就是公众的方式 和秘密关键材料在出口时进行序列化。 2018套房密钥 类型 `publicKeyBase58` 财务报告和审定财务报表 `secretKeyBase58` 属性, 和 Ed25519 多键( 此重播) 序列化 `publicKeyMultibase` 财务报告和审定财务报表 `secretKeyMultibase` 属性.
-   您可以使用所提供的键类型从2018转换为多键 `Ed25519Multikey.from()` 方法(见下文).
-   他们 `generate()` 相同的关键材料,考虑到相同的 `seed` 参数.
-   2018和Multikey键都产生并验证了同一种签名.

转换示例:

```js
import * as Ed25519Multikey from '@digitalcredentials/ed25519-multikey';
import {Ed25519VerificationKey2018}
  from '@digitalbazaar/ed25519-verification-key-2018';


const keyPair2018 = await Ed25519VerificationKey2018.generate({
  controller: 'did:example:1234'
});

const ed25519Multikey = await Ed25519Multikey.from(keyPair2018);

// The resulting ed25519Multikey will have the same `id` and `controller` properties
// as its 2018 source. They will also produce and verify the same signatures.

// data is a Uint8Array of bytes
const data = (new TextEncoder()).encode('test data goes here');
const signatureBytes2018 = await keyPair2018.signer().sign({data});

// this is the same signature as that produced by the 2020 key. And will verify
// the same.
await ed25519Multikey.verifier().verify({data, signature: signatureBytes2018})
// true
```

## 贡献

见 [贡献文件](https://github.com/digitalbazaar/bedrock/blob/master/CONTRIBUTING.md)来啊!

公关接受.

请遵照 [标准读取](https://github.com/RichardLitt/standard-readme) 规格.

## 许可证

[MIT 许可证](https://npmcn.com/package/%40digitalcredentials/ed25519-multikey/LICENSE.md) 2025年数字证书联合会.

## 常见问题

### @digitalcredentials/ed25519-multikey 是什么？

Javascript库用于生成并和Ed25519多键键对合作\.

### 如何安装 @digitalcredentials/ed25519-multikey？

在项目目录运行 npm install @digitalcredentials/ed25519-multikey，或使用 pnpm add / yarn add / bun add。

### @digitalcredentials/ed25519-multikey 支持 TypeScript 吗？

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

### @digitalcredentials/ed25519-multikey 支持 ESM 还是 CommonJS？

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

### @digitalcredentials/ed25519-multikey 需要什么版本的 Node\.js？

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

### @digitalcredentials/ed25519-multikey 可以商用吗？

@digitalcredentials/ed25519-multikey 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @digitalcredentials/ed25519-multikey 的下载量有多少？

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

### @digitalcredentials/ed25519-multikey 还在维护吗？

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

