#duplex #crypto #no-std #xoodyak

yanked 骑手

基于置换密码学的骑手模式(例如Xoodyak)的Rust通用实现。

12 个版本 (4 个破坏性更新)

0.6.3 2022年10月17日
0.5.0 2022年10月1日
0.1.0 2022年5月8日

#7 in #duplex

Download history 4/week @ 2024-03-14 15/week @ 2024-03-28 19/week @ 2024-04-04

801 每月下载量

MIT 许可证

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