8个版本
0.3.5 | 2023年4月21日 |
---|---|
0.3.4 | 2023年4月21日 |
0.2.0 | 2023年4月19日 |
0.1.0 | 2022年1月31日 |
#458 in 密码学
每月 29 次下载
29KB
695 代码行
blake3-lamport-signatures
blake3-lamport-signatures使用了blake3加密哈希函数实现了Lamport以及Lamport-Merkle签名。这是一个极其低效的数字签名协议,几乎在所有情况下都不应使用,其主要优点在于其简单性和灵活性。
Lamport密钥对仅应用于签署一条消息,而您可以为Lamport-Merkle密钥对指定要支持的消息数量。
use blake3_lamport_signatures::lamport;
let private_key = lamport::PrivateKey::generate()?;
let public_key = private_key.public_key();
let message = b"Yeah, I said it";
let signature = private_key.sign(message);
assert!(public_key.verify(message, &signature));
use blake3_lamport_signatures::merkle;
// generate a Merkle-Lamport private key capable of signing 100 messages
let mut private_key = merkle::PrivateKey::generate(100);
let public_key = private_key.public_key();
let message = b"And I'll say it again!";
let signature = private_key.sign(message);
assert!(public_key.verify(message, &signature);
通信
与Lamport签名相关联的是一种自然的双方验证通信协议。Alice和Bob以预共享的PublicKey
开始,每次发送消息时,他们都包含下一条消息的PublicKey
。
致谢
Leslie Lamport真是一位很酷的家伙。
依赖关系
~3.5MB
~79K SLoC