# @cloudflare/blindrsa-ts 中文文档

规范地址：https://npmcn.com/package/%40cloudflare/blindrsa-ts/

版本：0\.4\.6
npm 元数据更新时间：2026-09-03T14:18:02.231Z
中文译文更新时间：2026-11-10T03:07:20.450Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：314 kB，26 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：1 个
- 首次发布：2023-08-11T09:11:40.471Z
- 最新版本发布：2026-06-19T09:00:49.114Z
- 近 30 天下载量：257631（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 2 个）

## 中文简介

blinersa-ts:盲人RSA签名协议的文本库

## 安装

```sh
npm install @cloudflare/blindrsa-ts
```

也可以使用：`pnpm add @cloudflare/blindrsa-ts`、`yarn add @cloudflare/blindrsa-ts`、`bun add @cloudflare/blindrsa-ts`

## README

[![NPM](https://img.shields.io/npm/v/@cloudflare/blindrsa-ts?style=plastic)](https://www.npmjs.com/package/@cloudflare/blindrsa-ts) [![NPM](https://img.shields.io/npm/l/@cloudflare/blindrsa-ts?style=plastic)](https://npmcn.com/package/%40cloudflare/blindrsa-ts/LICENSE.txt)

[![NPM](https://nodei.co/npm/@cloudflare/blindrsa-ts.png)](https://www.npmjs.com/package/@cloudflare/blindrsa-ts)

# blinsa-ts:盲人和部分盲文RSA签名协议的文本库

**规格 :** 图书馆符合 [RFC-9474 (法语)](https://www.rfc-editor.org/info/rfc9474) 页:1 [部分失明的RSA 签字草案02](https://datatracker.ietf.org/doc/html/draft-amjad-cfrg-partially-blind-rsa-02),并匹配所提供的 [测试向量](https://www.rfc-editor.org/rfc/rfc9474.html#appendix-A), (中文(简体) ), [调和](https://datatracker.ietf.org/doc/html/draft-amjad-cfrg-partially-blind-rsa-02#name-test-vectors)。 。 。 .

## 盲人RSA 签名协议

RSA 盲签协议是客户端和服务器之间的一个两方协议,它们在那里交互计算

`sig = Sign(sk, input_msg)`

地点 `input_msg = Prepare(msg)` 是私有信件的已准备版本 `msg` 由客户提供 `sk` 是服务器提供的私人签名密钥.

```js
 Client(pk, msg)                      Server(sk, pk)
-----------------------------------------------------
input_msg = Prepare(msg)
blinded_msg, inv = Blind(pk, input_msg)
                      blinded_msg
                      ---------->
               blind_sig = BlindSign(sk, blinded_msg)
                       blind_sig
                      <----------
sig = Finalize(pk, input_msg, blind_sig, inv)
```

## 部分- Blind RSA 签名协议

以上协议的一个可能的概括是部分-Blind签名,其中另一个 `info` 可以提供字符串,允许共享公共元数据.

```js
 Client(pk, msg, info)          Server(sk, pk, info)
-------------------------------------------------------
input_msg = Prepare(msg)
blind_msg, inv = Blind(pk, input_msg, info)
                      blind_msg
                      ---------->
          blind_sig = BlindSign(sk, blind_msg, info)
                       blind_sig
                      <----------
sig = Finalize(pk, input_msg, info, blind_sig, inv)
```

### 使用量

#### 支持的备选案文

此软件包支持在 [RFC9474 (法语)](https://www.rfc-editor.org/info/rfc9474)。协商 [第5节](https://www.rfc-editor.org/rfc/rfc9474.html#section-5) (a) 将文件用于应用中每个变体的适当使用.

```ts
import { RSABSSA } from '@cloudflare/blindrsa-ts';
const variants = [
    RSABSSA.SHA384.PSS.Randomized,
    RSABSSA.SHA384.PSSZero.Randomized,
    RSABSSA.SHA384.PSS.Deterministic,
    RSABSSA.SHA384.PSSZero.Deterministic,
];
```

此外,它还支持在下文中指定的四个变体 [部分失明的RSA 签字草案02](https://datatracker.ietf.org/doc/html/draft-amjad-cfrg-partially-blind-rsa-02)。协商 [第6节](https://datatracker.ietf.org/doc/html/draft-amjad-cfrg-partially-blind-rsa-02#name-rsapbssa-variants) (a) 将文件用于应用中每个变体的适当使用.

```ts
import { RSAPBSSA } from '@cloudflare/blindrsa-ts';
const variants = [
    RSAPBSSA.SHA384.PSS.Randomized,
    RSAPBSSA.SHA384.PSSZero.Randomized,
    RSAPBSSA.SHA384.PSS.Deterministic,
    RSAPBSSA.SHA384.PSSZero.Deterministic,
];
```

#### 平台特定配置

**优化**

默认情况下,此库使用 [WebCrypto API 页面存档备份,存于互联网档案馆](https://w3c.github.io/webcrypto/)某些平台,例如: [云花岗工人](https://github.com/cloudflare/workerd/blob/6b63c701e263a311c2a3ce64e2aeada69afc32a1/src/workerd/api/crypto-impl-asymmetric.c%2B%2B#L827-L868),已经实施了本地操作。 这些可以通过通过 `{ supportRSARAW: true }` 当他们取回一个套房的时候. 在编写本报告时,这项专门优化仅针对 `BlindSign` 操作。 密钥类型无需修改, 将设定为 `RSA-RAW` 在操作时由图书馆提供.

**部分失明的登记册系统管理人验证**

此库不支持浏览器中部分盲的RSA签名验证. 这是因为 [`crypto.subtle`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle) 不允许部分失明的RSA要求的大型公共责任人。 您可以跟踪错误 [铬](https://issues.chromium.org/issues/340178598) 财务报告和审定财务报表 [火花](https://bugzilla.mozilla.org/show_bug.cgi?id=1896444)。 。 。 .

#### 设置

一旦选择了盲-RSA变体,首先生成服务器的密钥对. 键长和公示都可以指定.

```ts
const suite = RSABSSA.SHA384.PSS.Randomized();
const { privateKey, publicKey } = await suite.generateKey({
    publicExponent: Uint8Array.from([1, 0, 1]),
    modulusLength: 2048,
});
```

服务器向客户端分发其公钥.

#### 部分失明的RSA 签署考虑

部分盲目 RSA 签名需要客户端和服务器有一个公共字节数组 `info` 共享出带。 在适当情况下,这个字节数组必须作为参数提供. 请参考本报告提供的例子 [实例/ 部分盲点](https://npmcn.com/package/%40cloudflare/blindrsa-ts/examples/partially_blindrsa.ts) 以观察用法.

#### 步骤1

客户端准备任意输入,由服务器盲目签名. 这个 `blind` 方法生成一个被蒙蔽的消息和一个反向对象,后者稍后将在定稿步骤中被使用.

```ts
const msgString = 'Alice and Bob';
const message = new TextEncoder().encode(msgString);
const preparedMsg = suite.prepare(message);
const { blindedMsg, inv } = await suite.blind(publicKey, preparedMsg);
```

客户端只向服务器发送失明消息.

#### 步骤2

服务器收到被盲文后,会用盲文签名回复客户端.

```ts
const blindSignature = await suite.blindSign(privateKey, blindedMsg);
```

服务器向客户端发送被蒙蔽的签名.

#### 步骤3

客户端使用从服务器收到的被蒙蔽的签名以及第一步产生的反向对象来制作最终签名.

```ts
const signature = await suite.finalize(publicKey, preparedMsg, blindSignature, inv);
```

因此,客户获得一对 `(preparedMsg, signature)` 可以核实其有效性.

#### 步骤4

任何人可以访问服务器的公用钥匙,可以验证上面的签名 `preparedMsg`。 。 。 .

```ts
const isValid = await suite.verify(publicKey, signature, preparedMsg); // true
```

### 发展

| 任务 | 国家预防机制脚本 |
| --- | --- |
| 安装 | `$ npm ci` |
| 大楼 | `$ npm run build` |
| 单位测试 | `$ npm run test` |
| 实例 | `$ npm run examples` |
| 代码 Linting | `$ npm run lint` |
| 代码格式 | `$ npm run format` |

#### 依赖关系

此工程使用 Stanford JavaScript Crypto 库 [sjcl 键](https://github.com/bitwiseshiftleft/sjcl)。使用以下命令配置库.

```sh
make -f sjcl.Makefile
```

### 许可证

该项目根据以下规定获得许可证: [Apache-2.0 许可证](https://npmcn.com/package/%40cloudflare/blindrsa-ts/LICENSE.txt)。 。 。 .

## 常见问题

### @cloudflare/blindrsa-ts 是什么？

blinersa-ts:盲人RSA签名协议的文本库

### 如何安装 @cloudflare/blindrsa-ts？

在项目目录运行 npm install @cloudflare/blindrsa-ts，或使用 pnpm add / yarn add / bun add。

### @cloudflare/blindrsa-ts 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cloudflare/blindrsa-ts 支持 ESM 还是 CommonJS？

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

### @cloudflare/blindrsa-ts 需要什么版本的 Node\.js？

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

### @cloudflare/blindrsa-ts 可以商用吗？

@cloudflare/blindrsa-ts 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cloudflare/blindrsa-ts 的下载量有多少？

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

### @cloudflare/blindrsa-ts 还在维护吗？

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

