@cloudflare/blindrsa-ts

中文文档
0.4.6发布于 2026/06/19Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 25.8万

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

中文使用文档
文档目录5 节
  1. 盲人RSA 签名协议
  2. 部分- Blind RSA 签名协议
  3. 使用量
  4. 发展
  5. 许可证

NPM NPM

NPM

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

规格 : 图书馆符合 RFC-9474 (法语) 页:1 部分失明的RSA 签字草案02,并匹配所提供的 测试向量, (中文(简体) ), 调和。 。 。 .

盲人RSA 签名协议

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

sig = Sign(sk, input_msg)

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

 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 可以提供字符串,允许共享公共元数据.

 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 (法语)。协商 第5节 (a) 将文件用于应用中每个变体的适当使用.

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。协商 第6节 (a) 将文件用于应用中每个变体的适当使用.

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 页面存档备份,存于互联网档案馆某些平台,例如: 云花岗工人,已经实施了本地操作。 这些可以通过通过 { supportRSARAW: true } 当他们取回一个套房的时候. 在编写本报告时,这项专门优化仅针对 BlindSign 操作。 密钥类型无需修改, 将设定为 RSA-RAW 在操作时由图书馆提供.

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

此库不支持浏览器中部分盲的RSA签名验证. 这是因为 crypto.subtle 不允许部分失明的RSA要求的大型公共责任人。 您可以跟踪错误 铬 财务报告和审定财务报表 火花。 。 。 .

设置

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

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

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

部分失明的RSA 签署考虑

部分盲目 RSA 签名需要客户端和服务器有一个公共字节数组 info 共享出带。 在适当情况下,这个字节数组必须作为参数提供. 请参考本报告提供的例子 实例/ 部分盲点 以观察用法.

步骤1

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

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

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

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

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

步骤3

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

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

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

步骤4

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

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 键。使用以下命令配置库.

make -f sjcl.Makefile

许可证

该项目根据以下规定获得许可证: Apache-2.0 许可证。 。 。 .

版本与发布记录

@cloudflare/blindrsa-ts 共发布 12 个版本,首次发布于 2023/08/11;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.6latest2026/06/194 个月前
0.4.52026/03/098 个月前
0.4.42025/05/081.5 年前
0.4.32025/03/101.7 年前
0.4.22024/04/112 年前
0.4.12024/03/142 年前

关于 @cloudflare/blindrsa-ts 的常见问题

@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 和提交记录判断。