#permutation #cryptography #crypto #crytography

无std crypto-permutation

基于排列的密码学框架;核心特性

1 个不稳定版本

0.1.0 2023年7月10日

#286 in 无标准库


3 个Crate中使用

MIT/Apache

36KB
426

crypto-permutation 许可证:MIT OR Apache-2.0 crypto-permutation on crates.io crypto-permutation on docs.rs 源代码仓库 Rust 版本: ^1.65

Rust中基于排列的密码学抽象。

该crate提供了基于通用排列的密码学抽象。这允许其他crate构建对具体的密码排列或牌函数进行泛化的构造。API可以被认为由三个主要部分组成

  1. 密码学IO抽象
  2. 密码排列抽象
  3. 牌函数抽象

密码学IO抽象是该crate的基础。其他抽象建立在它之上。

IO

密码学IO抽象提供了通用的方式将数据输入到密码函数(如散列或牌/牌函数)或从密码函数(如流密码、可扩展输出函数或牌/牌函数)获取输出。相同的特性也可以用来抽象(固定或可变大小)的缓冲区,这对于例如抽象低级原语(如排列)非常有用。

API包含两个核心特性

  • Writer:可以将缓冲区或构造数据写入。例如,用于将数据输入到牌函数中。
  • Reader:可以从中读取或生成输出流的缓冲区或构造。例如,用于从牌函数生成输出流。

排列

使用两个特性对密码排列进行抽象

  • PermutationState:固定大小缓冲区上的加密排列可以作用的对象。它可以有特定的数据布局(例如字节顺序)要求,只要可能克隆状态、将状态异或在一起并将字节写入(使用Writer特性和Reader特性)和从(使用Reader特性)读取字节。
  • Permutation:一种加密排列。它作用于特定的PermutationState

牌组函数

牌组函数是一种双扩展加密密钥函数。它通过DeckFunction特性进行抽象。它允许反复输入和输出可变长度的数据流。对于输入数据,使用Writer特性和Reader特性用于输出。

无运行时依赖

功能