#items #slice #compatible #permute #permutation #permute-key #unpredictable

no-std libpermute

一个兼容 no_std 的库,提供对切片项进行排列的函数

2 个稳定版本

1.0.1 2021 年 11 月 23 日
1.0.0 2021 年 11 月 17 日

#2029算法

MIT/Apache

14KB
134

libpermute

Crates.io Documentation

libpermute 是一个 no_std 兼容的库,提供对切片项进行排列的函数。

libpermute 提供以下主要功能

  1. 稳定性。排列算法不会在不进行重大版本升级的情况下更改。

  2. 可重实现性。在另一个库或另一种语言中重新实现该库使用的算法应该是相对直接的。

  3. 强度。给定一个不可预测的排列密钥,排列也应该是不可预测的 - 假设没有人会破解 Sha-256ChaChar20 算法。

示例

use libpermute::permute;

fn main() {
    const KEY: &'static [u8] = &[0, 1, 2, 3, 4, 5, 6, 7];
    const INPUT: &str = "Hello World!";

    let mut buff = [0u8; INPUT.len()];
    buff.copy_from_slice(INPUT.as_bytes());

    permute(KEY, &mut buff);

    println!("RESULT: '{}'", std::str::from_utf8(&buff).unwrap());
}

No_std

可以通过禁用 "std" 功能来激活 No_std 模式。

许可协议

该项目根据您的选择许可

依赖关系

~685KB
~14K SLoC