12 个版本 (4 个破坏性更新)
0.6.3 | 2022年10月17日 |
---|---|
0.5.0 | 2022年10月1日 |
0.1.0 | 2022年5月8日 |
#7 in #duplex
801 每月下载量
42KB
833 行
骑手
基于置换密码学的骑手模式的Rust实现。
包括Xoodyak和几个基于Keccak-p的构造(亲切地称为Keccyak)。
许可证
版权所有 © 2020-2022 Coda Hale, Frank Denis
(部分改编自 rust-xoodyak
.)
在MIT许可证下分发。
lib.rs
:
骑手是一个在完整状态密钥双工构造之上的操作模式,它通过状态对象提供细粒度的对称密钥密码学服务。
消息摘要
use cyclist::Cyclist;
use cyclist::xoodyak::XoodyakHash;
let mut hash = XoodyakHash::default();
hash.absorb(b"This is an input message!");
let digest = hash.squeeze(16);
assert_eq!(digest, vec![24, 79, 57, 49, 133, 57, 228, 222, 11, 95, 145, 57, 76, 16, 16, 122]);
消息认证码
use cyclist::Cyclist;
use cyclist::xoodyak::XoodyakKeyed;
let mut mac = XoodyakKeyed::new(b"This is a secret key!", b"", b"");
mac.absorb(b"This is an input message!");
let tag = mac.squeeze(16);
assert_eq!(tag, vec![194, 166, 86, 80, 74, 62, 172, 115, 122, 107, 186, 213, 252, 82, 239, 186]);
认证加密和数据
use cyclist::Cyclist;
use cyclist::xoodyak::XoodyakKeyed;
let mut aead = XoodyakKeyed::new(b"This is a secret key!", b"This is a nonce!", b"");
aead.absorb(b"This is authenticated data!");
let ciphertext = aead.seal(b"This is the plaintext!");
assert_eq!(ciphertext, vec![100, 182, 152, 49, 219, 148, 32, 124, 17, 34, 159, 169, 12, 246, 224, 13, 23, 115, 47, 175, 149, 159, 145, 238, 190, 53, 77, 235, 98, 255, 52, 48, 54, 219, 148, 27, 208, 58]);
依赖关系
~19KB