use crate::cryptography::aes::{
encrypt::{Aes, AesEncryptionType, add_round_key, inverse_sub_bytes_state},
key::expand_key,
mix_column::inverse_mix_columns_state,
shift_rows::inverse_shift_rows_state,
};
impl Aes {
pub fn decrypt(y: u128, security: AesEncryptionType) -> u128 {
let round_keys = expand_key(security);
let mut state = y.to_be_bytes();
add_round_key(&mut state, round_keys[security.rounds()]);
for round in (1..security.rounds()).rev() {
inverse_shift_rows_state(&mut state);
inverse_sub_bytes_state(&mut state);
add_round_key(&mut state, round_keys[round]);
inverse_mix_columns_state(&mut state);
}
inverse_shift_rows_state(&mut state);
inverse_sub_bytes_state(&mut state);
add_round_key(&mut state, round_keys[0]);
u128::from_be_bytes(state)
}
}