4 个版本

0.1.0 2023 年 11 月 4 日
0.0.3 2023 年 11 月 4 日
0.0.2 2023 年 11 月 4 日
0.0.1 2023 年 11 月 4 日

WebAssembly 中排名 #401

GPL-3.0 许可证

21KB
352

SRA WASM 库

Build Status Crate Version License Documentation

概述

此 Rust 库利用 WebAssembly (WASM) 实现基于 SRA 算法的加密和解密方法。它提供了生成加密密钥、加密和解密消息以及支持模幂运算和扩展欧几里得算法等操作的功能。该库旨在用于 Web 应用程序,并设计为编译成 WASM 并在 JavaScript 应用程序中使用。

SRA 算法

SRA 算法是一种基于模幂运算和扩展欧几里得算法的公钥密码系统,用于加密和解密消息。该算法的步骤如下:

  1. 生成两个大质数 p 和 q。
  2. 计算 N = p * q。
  3. 计算 phi = (p - 1) * (q - 1)。
  4. 选择一个数 e,使得 1 < e < phi 且 e 与 phi 互质。
  5. 计算 d,使得 d * e = 1 (mod phi)。
  6. 公钥为 (e, N),私钥为 (d, N)。
  7. 要加密消息 m,计算 c = m^e (mod N)。
  8. 要解密密文 c,计算 m = c^d (mod N)。

SRA 是交换律的,意味着加密和解密的顺序不重要。这由以下证明:

(m^eA mod N)^eB mod N = (m^eB mod N)^eA mod N

SRA 是由 RSA 的发明者 Shamir、Rivest 和 Adleman 开发的算法。它与 RSA 类似,但在生成公钥和私钥的方法上有所不同。SRA 算法在以下论文中有更详细的描述:A. Shamir,R.L. Rivest,L.M. Adleman,Mental poker,in: The Mathematical Gardner, Springer, 1981: pp. 37–43。

特性

  • SRA 密钥对的生成。
  • SRA 加密和解密。
  • 模幂运算。
  • 用于计算模逆的扩展欧几里得算法。

函数

以下是库中实现的函数的简要描述

  • js_generate_phi_n:生成共享的 phi 和 N,同时保持 p 和 q 的秘密。

  • js_generate_key_pair:生成 SRA 密钥对。

  • js_encrypt:使用 SRA 加密加密消息。

  • js_decrypt:使用 SRA 解密解密密文。


  • exp_by_squaring:实现平方乘法算法。

  • encrypt:使用 SRA 加密加密消息。

  • decrypt:使用 SRA 解密解密密文。

  • get_fixed_sized_prime:生成固定大小的质数。

  • generate_phi_n:生成共享的 phi 和 N,同时保持 p 和 q 的秘密。

  • extended_gcd:实现了扩展欧几里得算法。

  • mod_inverse:计算一个数的模逆。

  • generate_key_pair:生成一个SRA密钥对。

测试

该库包含一系列测试,以确保实现函数的正确性。这些测试可以通过以下命令运行:wasm-pack test --node

使用方法

要使用此库,您需要安装Rust和wasm-bindgen。然后,您可以通过在Cargo.toml文件中添加以下内容将其包含到您的项目中

[dependencies]
sra_wasm = "0.1.0"

然后,在您的main.rs文件中,您可以按如下方式使用库函数

use sra_wasm::\*;
fn main() {
// Use the library functions here
}

贡献

欢迎对此项目做出贡献。如果您发现了一个错误或想添加新功能,请打开一个问题或提交一个拉取请求。如果您的代码添加了新功能,请编写测试以确认新功能按预期工作。请确保将您的更改合并到CHANGELOG.md文件中。

许可证

本项目采用GNU GPLv3许可证。有关详细信息,请参阅LICENSE文件。

依赖

~6MB
~106K SLoC