6个版本
使用旧的Rust 2015
0.2.4 | 2018年11月29日 |
---|---|
0.2.3 | 2018年11月29日 |
0.1.0 | 2018年11月29日 |
#9 在 #lamports 中排名
9KB
125 代码行
lamport-signatures-rs
在密码学中,Lamport签名或Lamport一次性签名方案是一种构造数字签名的算法。Lamport签名可以从任何加密安全的单向函数中构建;通常使用加密散列函数。尽管量子计算机的潜在发展威胁到许多常见加密形式的安全,如RSA,但人们认为具有大散列函数的Lamport签名在这种事件中仍然安全。不幸的是,每个Lamport密钥只能用于签一个消息。然而,结合哈希树,单个密钥可以用于许多消息,这使得这是一个相当高效的数字签名方案。
未在生产环境中测试,使用风险自负
如何使用
extern crate lamport_signatures;
use lamport_signatures::lamport_utils;
// generate private key
let priv_key = lamport_utils::gen_secret_key().unwrap();
// derive public key
let pub_key = lamport_utils::derive_pub_key(&priv_key);
// create some message
let msg = "hi elichai2, some secret msg";
// digest the msg
let msg_digest = lamport_utils::hash(msg.as_bytes());
// sign the digest
let signature : Vec<[u8;32]> = priv_key.sign(&msg_digest);
// verify signature against public key
let is_valid = pub_key.verify(&msg_digest, &signature);
依赖项
~5.5MB
~197K SLoC