An open API service indexing awesome lists of open source software.

https://github.com/dagenix/libpermute


https://github.com/dagenix/libpermute

Last synced: 11 months ago
JSON representation

Awesome Lists containing this project

README

          

# libpermute

[![Crates.io](https://img.shields.io/crates/v/libpermute.svg)](https://crates.io/crates/libpermute)
[![Documentation](https://docs.rs/libpermute/badge.svg)](https://docs.rs/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](https://en.wikipedia.org/wiki/SHA-2)
or [ChaChar20](https://en.wikipedia.org/wiki/Salsa20) algorithms.

# Example

```rust
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

* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
)

at your option.