1 个不稳定版本
0.1.0 | 2022 年 11 月 2 日 |
---|
#2419 在 密码学
515KB
1.5K SLoC
基于哈希的签名
基于哈希的签名的 Rust 实现。
免责声明: 此存储库是一个玩具项目,用于在 Rust 和密码学原语上玩耍。它实现了 Dan Boneh 和 Victor Shoup 所著的《应用密码学研究生课程》第 14 章的一些想法。
基于哈希的签名 - 与基于 RSA 或 ECC 的签名方案不同 - 不依赖于已知被量子计算机破坏的数论假设。
无状态多次签名方案可以通过三步过程构建
- 一次签名方案可以完全从哈希函数构建。
- 从那里,我们构建一个索引签名方案。使用 Merkle 树,否则非常大的公钥可以减少到单个哈希(以更大的签名为代价)。
- 最后,Merkle 签名构建索引签名方案的树。
命令行工具
安装 Rust 并运行
$ cargo install hash-based-signatures
这为您提供了一个命令行工具,可以生成密钥、签名文件和验证签名

要开始签名验证,请查看 示例!
要签名文件,请运行
$ cargo run -- key-gen
这将在您的当前工作目录中创建一个 .private_key.json
并打印相应的公钥。请保密!
要签名文件,请确保您的工作目录中有一个 .private_key.json
并运行
$ cargo run -- sign example/readme.md
Web 应用程序
最后但并非最不重要的是,可以使用基于 Web Assembly 编译的代码的 Web 应用程序验证签名
依赖项
~13MB
~333K SLoC