#签名方案 #签名 #方案 #lamports #一次性

lamport_ots

Leslie Lamport的一次性签名方案的Rust实现

2个版本

0.1.1 2022年3月9日
0.1.0 2022年3月2日

#1984 in 加密学

MIT 许可证

19KB
239

lamport_ots

Crate Documentation License

Leslie Lamport的同名签名方案的Rust实现,通过使用加密散列提供了一种数字签名数据的方法。值得注意的是,该方案即使在量子计算机攻击的情况下也被认为是可以保证安全的。

文档

关于此软件包的完整文档可以在此处找到。

用法

典型示例

use lamport_ots::KeyPair;
use sha2::Sha256;

// Generate a randomized Public/Private KeyPair
let keypair = KeyPair::<Sha256>::generate();

// Use that KeyPair to generate a signature for passed data
let signature = keypair.sign(b"Hello world!");

// That signature can now verify the signed data
assert!(signature.verify(b"Hello world!"));
assert!(!signature.verify(b"Hello moon!"));

签名文件

由于lamport_ots期望签名和验证的字节数据,因此与文件(或任何可读数据)一起使用时,需要先将数据读入缓冲区。

use lamport_ots::KeyPair;
use sha2::Sha256;

use std::fs::File;
use std::io::Read;

// Generate a randomized Public/Private KeyPair
let keypair = KeyPair::<Sha256>::generate();

// Read the desired file into a buffer
let mut f = File::open("my_file.txt").unwrap();
let mut buffer = Vec::new();
f.read_to_end(&mut buffer);

// Sign the buffer
let signature = keypair.sign(&buffer);

// That signature can now verify the buffers contents
assert!(signature.verify(&buffer));

依赖项

此软件包使用rand和RustCrypto digest软件包。此外,它旨在与RustCrypto的众多散列函数或任何其他实现其digest特质的哈希算法一起使用。

注意事项

此软件包尚未经过任何有能力的权威机构的安全审查,因此未经事先检查不应用于任何重要用途。使用风险自担。

许可证

此软件根据MIT许可证分发。

依赖项

~640KB
~13K SLoC