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
ArrayNetworkwrapper around anIntoIterator.- Symmetric
SymmetricNetworkwrapper around anIntoIterator.- XorArray
- Array that implements
BitXor.
Traits§
- Array
Ext - Extension trait for creating
ArrayNetworks. - Array
Network Networkdealing withGenericArrays.- Network
- Feistel network.
- Round
- Hash function for a specific round. Usually depends on a key.
- Symmetric
Ext - Extension trait for creating
SymmetricNetworks. - Symmetric
Network NetworkwithNetwork::Lequal toNetwork::RandNetwork::forwardequivalent toNetwork::backward.