rs_keccak_nbits
rs_keccak_nbits
is a Rust crate implementing the Keccak Extendable-Output Function (XOF) that provides a variable-length hash output. This permutation-based function is designed for compatibility with Rust's libcore in a #![no_std]
context, allowing it to operate as a standalone crate for specialized use cases and also function within a #![no_std]
, #![no_alloc]
environment, rendering it suitable for systems where dynamic memory allocation is not feasible.
This implementation of Keccak is not compliant with the Federal Information Processing Standards (FIPS) Publication 202[^1]. The rs_keccak_nbits
crate is designed to be used primarily for academic purposes and in scenarios where consistency, rather than security, is the main requirement.
This implementation is capable to represent any of the other Keccak permutations, including the other ones present in RustyShield.
Despite not being FIPS compliant, the Keccak function is suitable for the following contexts in an academic or consistency-driven scenario:
Beyond these specific recommendations, Keccak could also find application in:
These points should be carefully considered, given your overall academic objectives or need for consistency.
For access to a comprehensive range of cryptographic functions, rs_keccak_nbits
can be utilized as part of the rs_shield
library bundle.
Below are steps to use the rs_keccak_nbits
crate in your Rust projects:
Add the following line to your Cargo.toml
under the [dependencies]
section:
toml
rs_keccak_nbits = "0.1.*"
_Please replace "0.1"
with the version number you intend to use.
Use the functions provided by the rs_keccak_nbits
module in your code. Here's an example of how to create a Keccak hash from a string:
```rust use rskeccaknbits::{HasherContext, KeccakHasher};
// In this example it is representing a 200bit state, with 20bytes of rate, and 20bytes output
let mut nbitkeccak_hasher = NBitKeccakHasher::
4usize.hash(&mut nbitkeccak_hasher);
let i = nbitkeccakhasher.finish(); asserteq!(result, 0xEB31065163D8823);
let output = HasherContext::finish(& mut nbitkeccak_hasher); println!("{:x}", output); ```
For a more detailed exploration of rs_keccak_nbits
, an overview of other available cryptographic functions, and an introduction to the broader rs_shield
project, please consult the RustyShield project page on crates.io.
Potential contributors are encouraged to consult the contribution guidelines on our GitHub page.
This project is licensed under GPL-2.0-only.
Note: The references have been provided as per the best knowledge as of May 17, 2023.