diff options
author | Daniel Schadt <kingdread@gmx.de> | 2025-04-10 11:35:37 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2025-04-10 18:22:46 +0200 |
commit | 55c58a7c18eaece91701999f57a2ae13003c5d06 (patch) | |
tree | 7da726ec71e0dbb037959b4a825fa7f29228d4c5 /src | |
parent | 1bf45c790ec55e1111d0b6846b42029a76effdd3 (diff) | |
download | zears-55c58a7c18eaece91701999f57a2ae13003c5d06.tar.gz zears-55c58a7c18eaece91701999f57a2ae13003c5d06.tar.bz2 zears-55c58a7c18eaece91701999f57a2ae13003c5d06.zip |
rewrite aesenc to work in-place
speeds up encryption by a bit
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 50 |
1 files changed, 19 insertions, 31 deletions
@@ -247,44 +247,32 @@ impl Aez { } } -fn aesenc(mut block: Block, key: &Block) -> block::Block { +fn aesenc(block: &mut Block, key: &Block){ aes::hazmat::cipher_round((&mut block.0).into(), &key.0.into()); - block } fn aes4(keys: &[&Block; 5], block: &Block) -> Block { - aesenc( - aesenc(aesenc(aesenc(*block ^ *keys[0], keys[1]), keys[2]), keys[3]), - keys[4], - ) + let mut r = *block ^ *keys[0]; + aesenc(&mut r, keys[1]); + aesenc(&mut r, keys[2]); + aesenc(&mut r, keys[3]); + aesenc(&mut r, keys[4]); + r } fn aes10(keys: &[&Block; 11], block: &Block) -> Block { - aesenc( - aesenc( - aesenc( - aesenc( - aesenc( - aesenc( - aesenc( - aesenc( - aesenc(aesenc(*block ^ *keys[0], keys[1]), keys[2]), - keys[3], - ), - keys[4], - ), - keys[5], - ), - keys[6], - ), - keys[7], - ), - keys[8], - ), - keys[9], - ), - keys[10], - ) + let mut r = *block ^ *keys[0]; + aesenc(&mut r, keys[1]); + aesenc(&mut r, keys[2]); + aesenc(&mut r, keys[3]); + aesenc(&mut r, keys[4]); + aesenc(&mut r, keys[5]); + aesenc(&mut r, keys[6]); + aesenc(&mut r, keys[7]); + aesenc(&mut r, keys[8]); + aesenc(&mut r, keys[9]); + aesenc(&mut r, keys[10]); + r } fn extract(key: &[u8]) -> [u8; 48] { |