Expand description
Generic implementation of a Feistel Cipher.
Warning: this crate for now values ease of use and genericity over having perfect timing-attack-resistent implementations.
let network = key
.chunks_exact(4)
.map(|chunk| {
move |half: &XorArray<u8, ConstArrayLength<32>>| {
let mut hasher = Sha256::new();
hasher.update(half);
hasher.update(chunk);
let value: [u8; 32] = hasher.finalize().into();
XorArray(value.into())
}
})
.feistel_symmetric();
let original = [0; 64].into();
let encrypted = network.clone().array_encrypt(original);
assert_ne!(original, encrypted);
let decrypted = network.clone().array_decrypt(encrypted);
assert_eq!(original, decrypted);
Structs§
- Array
ArrayNetwork
wrapper around anIntoIterator
.- Symmetric
SymmetricNetwork
wrapper around anIntoIterator
.- XorArray
- Array that implements
BitXor
.
Traits§
- Array
Ext - Extension trait for creating
ArrayNetwork
s. - Array
Network Network
dealing withGenericArray
s.- Network
- Feistel network.
- Round
- Hash function for a specific round. Usually depends on a key.
- Symmetric
Ext - Extension trait for creating
SymmetricNetwork
s. - Symmetric
Network Network
withNetwork::L
equal toNetwork::R
andNetwork::forward
equivalent toNetwork::backward
.