# @digitalcredentials/did-method-key 中文文档

规范地址：https://npmcn.com/package/%40digitalcredentials/did-method-key/

版本：3\.0\.0
npm 元数据更新时间：2026-09-30T17:46:15.448Z
中文译文更新时间：2026-11-12T08:56:24.490Z
软件包许可：BSD-3-Clause

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

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

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

- 包体积（解压后）：30.5 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=16
- 运行依赖：2 个
- 首次发布：2021-05-19T22:52:38.233Z
- 最新版本发布：2025-04-30T16:30:51.661Z
- 近 30 天下载量：5520（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 0 个）

## 中文简介

A做:键法解析器.

## 安装

```sh
npm install @digitalcredentials/did-method-key
```

也可以使用：`pnpm add @digitalcredentials/did-method-key`、`yarn add @digitalcredentials/did-method-key`、`bun add @digitalcredentials/did-method-key`

## README

# 已执行: key 方法驱动程序 _(@ 数字证书/ did- method- key)_

[![NPM Version](https://img.shields.io/npm/v/@digitalcredentials/did-method-key)](https://www.npmjs.com/package/@digitalcredentials/did-method-key)

> A 类 [没有](https://w3c.github.io/did-core) (分散式标识符)方法驱动程序 `did-io` 用于独立使用

## 目录

-   [背景情况](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-background)
    -   [示例文档](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-example-did-document)
-   [警卫](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-security)
-   [安装](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-install)
-   [使用量](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-usage)
-   [贡献](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-contribute)
-   [商业支助](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-commercial-support)
-   [许可证](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-license)

## 背景情况

(从 [`digitalbazaar/did-method-key` v1.0.0 (韩语)](https://github.com/digitalbazaar/did-method-key-js) 以提供类型脚本兼容性。 )

另见(相关规格):

-   [分散标识符](https://w3c.github.io/did-core)
-   [链接数据加密成套登记](https://w3c-ccg.github.io/ld-cryptosuite-registry/)
-   [链接数据证明](https://w3c-dvcg.github.io/ld-proofs/)

A 类 `did:key` 方法驱动程序 [`did-io`](https://github.com/digitalbazaar/did-io) 客户端库和供独立使用.

这个 `did:key` 用于表达公共密钥的方法不 要求拥有任何类型的已登记。 它的一般形式是:

```
did:key:<multibase encoded, multicodec identified, public key>
```

因此,举例来说,以下“DOD”将来源于一个已编码的基号-58 ed25519 公用钥匙 :

```
did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH
```

这符合以下文件:

### 示例文档

```json
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1",
    "https://w3id.org/security/suites/x25519-2020/v1"
  ],
  "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
  "verificationMethod": [{
    "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  }],
  "authentication": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "assertionMethod": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "capabilityDelegation": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "capabilityInvocation": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "keyAgreement": [{
    "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p",
    "type": "X25519KeyAgreementKey2020",
    "controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "publicKeyMultibase": "z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p"
  }]
}
```

## 警卫

这个 `keyAgreement` 键是 Curve25519 公钥(适合 Diffie-Hellman 密钥交换),具有决定性意义 _来源_ 来源 Ed25519 键, 使用 [`ed2curve-js`](https://github.com/dchest/ed2curve-js)。 。 。 .

注意此衍生密钥是可选的 -- 目前有 [无证据](https://crypto.stackexchange.com/questions/3260/using-same-keypair-for-diffie-hellman-and-signing/3311#3311) 这是安全的.

## 安装

需要节点.js 12+

要从 `npm`数字 :

```
npm install --save @digitalcredentials/did-method-key
```

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

```
git clone https://github.com/digitalcredentials/did-method-key-js.git
cd did-method-key-js
npm install
```

## 使用量

### `generate()`

生成新密钥并获得相应的 `did:key` 方法 DID 文档 :

```js
const didKeyDriver = require('@digitalcredentials/did-method-key').driver();

// generate did:key using Ed25519 key type by default
const {didDocument, keyPairs, methodFor} = await didKeyDriver.generate();

// print the DID Document above
console.log(JSON.stringify(didDocument, null, 2));

// keyPairs will be set like so ->
Map(2) {
  'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv' => Ed25519VerificationKey2020 {
    id: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    controller: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    type: 'Ed25519VerificationKey2020',
    publicKeyMultibase: 'z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    privateKeyMultibase: 'z3zDo1wXuXGcFkJa9SPE7VYpdutmHq8gJsvFRMKJckTWMykoHsAjWNbHXqzrZ8qa7aWdDTjmJNJ1amYEG2mCvZZeY'
  },
  'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM' => X25519KeyAgreementKey2020 {
    id: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM',
    controller: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    type: 'X25519KeyAgreementKey2020',
    publicKeyMultibase: 'z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM',
    privateKeyMultibase: 'z3weeMD56C1T347EmB6kYNS7trpQwjvtQCpCYRpqGz6mcemT'
  }
}
```

`methodFor` 是返回公/私密密钥对的便利函数 例如,为了某一特定目的。 例如,核查密钥(包含 `signer()` 财务报告和审定财务报表 `verifier()` 函数)经常用于 [`jsonld-signatures`](https://github.com/digitalbazaar/jsonld-signatures) 或者说 [`vc-js`](https://github.com/digitalcredentials/vc-js) 操作。 生成后 新的做: 键做,你可以做:

```js
// For signing Verifiable Credentials
const assertionKeyPair = methodFor({purpose: 'assertionMethod'});
// For Authorization Capabilities (zCaps)
const invocationKeyPair = methodFor({purpose: 'capabilityInvocation'});
// For Encryption using `@digitalbazaar/minimal-cipher`
const keyAgreementPair = methodFor({purpose: 'keyAgreement'});
```

请注意: `methodFor` 返回包含公用和私用的密钥对 键对(因为它可以进入 `keyPairs` 地图来自 `generate()`) (中文(简体) ). 这使得它有用 _签名_ 财务报告和审定财务报表 _加密_ 操作(不同于 `publicMethodFor` 这回由 `get()`页:1.

### `publicKeyToDidDoc()`

如果你已经有一个 `Ed25519VerificationKey2020` 公钥对象(作为 LDKeyPair 实例,或纯密钥描述对象,您可以将其转换为 a 文件:

```js
const {didDocument} = await didKeyDriver.publicKeyToDidDoc({publicKeyDescription});
```

### `get()`

#### 从 a 获取一个完整的文件 `did:key` 没有

获取已有的 DDE 文档 `did:key` 没有:

```js
const did = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T';
const didDocument = await didKeyDriver.get({did});
```

(成果在 [实例](https://npmcn.com/package/%40digitalcredentials/did-method-key/#readme-example-did-document) (见上文).

#### 仅按密钥 ID 获取密钥对象

您也可以使用一个 `.get()` 以获取单个密钥, 如果你知道它是id 已经( 这对构建 `documentLoader`s 用于 JSON- LD 签名 libs,产生的键确实包括适当的 `@context`) (中文(简体) ).

```js
const verificationKeyId = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T';
await didKeyDriver.get({url: verificationKeyId});
// ->
{
  "@context": "https://w3id.org/security/suites/ed25519-2020/v1",
  "id": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "type": "Ed25519VerificationKey2020",
  "controller": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "publicKeyMultibase": "z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T"
}

const keyAgreementKeyId = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW';
await didKeyDriver.get({url: keyAgreementKeyId});
// ->
{
  "@context": "https://w3id.org/security/suites/x25519-2020/v1",
  "id": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW",
  "type": "X25519KeyAgreementKey2020",
  "controller": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "publicKeyMultibase": "z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW"
}
```

### `publicMethodFor()`

通常,你有一个 `did:key` 做了,你需要得到一个钥匙 特别 _目的_ 从它,例如 `assertionMethod` 用于验证的密钥 VC 签名,或 a `keyAgreement` 密钥以加密此选项的文档 控制器。 控制器.

为此,你可以使用组合 `get()` 财务报告和审定财务报表 `publicMethodFor`数字 :

```js
// Start with the DID
const didDocument = await didKeyDriver.get({did});
// This lets you use `publicMethodFor()` to get a key for a specific purpose
const keyAgreementData = didKeyDriver.publicMethodFor({
  didDocument, purpose: 'keyAgreement'
});
const assertionMethodData = didKeyDriver.publicMethodFor({
  didDocument, purpose: 'assertionMethod'
});

// If you're using a `crypto-ld` driver harness, you can create key instances
// which allow you to get access to a `verify()` function.
const assertionMethodPublicKey = await cryptoLd.from(assertionMethodData);
const {verify} = assertionMethodPublicKey.verifier();
```

`publicMethodFor` 将返回 `undefined` 如果找不到给定的密钥 目标.

## 贡献

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

公关接受.

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

## 许可证

-   MIT许可证 - DCC - TypeScript兼容.
-   新BSD许可证 (3-clause) 2020-2021 Digital Bazaar - 初始实施.

## 常见问题

### @digitalcredentials/did-method-key 是什么？

A做:键法解析器\.

### 如何安装 @digitalcredentials/did-method-key？

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

### @digitalcredentials/did-method-key 支持 TypeScript 吗？

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

### @digitalcredentials/did-method-key 支持 ESM 还是 CommonJS？

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

### @digitalcredentials/did-method-key 需要什么版本的 Node\.js？

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

### @digitalcredentials/did-method-key 可以商用吗？

@digitalcredentials/did-method-key 使用 BSD-3-Clause 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括，不构成法律意见，请以许可原文为准。

### @digitalcredentials/did-method-key 的下载量有多少？

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

### @digitalcredentials/did-method-key 还在维护吗？

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

