2个版本
0.1.1 | 2022年3月9日 |
---|---|
0.1.0 | 2022年3月2日 |
#1984 in 加密学
19KB
239 行
lamport_ots
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