Crate libpermute

Source
Expand description

§libpermute

libpermute is a no_std compatible library that provides a function to permute the items of a slice.

libpermute offers a few main features:

  1. Stability. The permutation algorithm won’t be changed without a major version bump.

  2. Re-implementability. It should be relatively straightforward to re-implement the algorithm this library uses in another library or in another language.

  3. Strength. Given an unpredictable permute_key, the permutation should also be unpredictable - assuming that no one breaks the Sha-256 or ChaChar20 algorithms.

§Example

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

No_std mode may be activated by disabling the “std” feature.

§License

This project is licensed under either of

at your option.

Structs§

PermuteKeyData
PermuteKeyData can be used to incrementally collect data to form a key to pass to permute.

Traits§

PermuteKey
A type must implement PermuteKey to be used as a permute_key value for the permute function.

Functions§

permute
Permute the items in data using a permutation determined by the given permute_key.