1 个不稳定版本
0.1.0 | 2023年7月10日 |
---|
#286 in 无标准库
在 3 个Crate中使用
36KB
426 行
crypto-permutation

Rust中基于排列的密码学抽象。
该crate提供了基于通用排列的密码学抽象。这允许其他crate构建对具体的密码排列或牌函数进行泛化的构造。API可以被认为由三个主要部分组成
- 密码学IO抽象
- 密码排列抽象
- 牌函数抽象
密码学IO抽象是该crate的基础。其他抽象建立在它之上。
IO
密码学IO抽象提供了通用的方式将数据输入到密码函数(如散列或牌/牌函数)或从密码函数(如流密码、可扩展输出函数或牌/牌函数)获取输出。相同的特性也可以用来抽象(固定或可变大小)的缓冲区,这对于例如抽象低级原语(如排列)非常有用。
API包含两个核心特性
排列
使用两个特性对密码排列进行抽象
PermutationState
:固定大小缓冲区上的加密排列可以作用的对象。它可以有特定的数据布局(例如字节顺序)要求,只要可能克隆状态、将状态异或在一起并将字节写入(使用Writer
特性和Reader
特性)和从(使用Reader
特性)读取字节。Permutation
:一种加密排列。它作用于特定的PermutationState
。
牌组函数
牌组函数是一种双扩展加密密钥函数。它通过DeckFunction
特性进行抽象。它允许反复输入和输出可变长度的数据流。对于输入数据,使用Writer
特性和Reader
特性用于输出。