0xid_crypt/src/aes/mod.rs

60 lines
1.2 KiB
Rust

#![allow(unused)]
struct State {
state: [[u8; 4]; 4],
}
impl State {
fn new(data: [u8; 16]) -> Self {
let mut state = [[0u8; 4]; 4];
for (i, &b) in data.iter().enumerate() {
state[i % 4][i / 4] = b;
}
return State { state };
}
fn get(&self, c: usize, r: usize) -> u8 {
return self.state[c][r];
}
fn set(&mut self, c: usize, r: usize, v: u8) {
self.state[c][r] = v;
}
fn v0(&self) -> [u8; 4] {
return self.state[0];
}
fn v1(&self) -> [u8; 4] {
return self.state[1];
}
fn v2(&self) -> [u8; 4] {
return self.state[2];
}
fn v3(&self) -> [u8; 4] {
return self.state[3];
}
fn u(&self, i: usize) -> [u8; 4] {
return self.state[i];
}
}
//pub fn encrypt(data: &[u8], key: &[u8]) -> &[u8] {
pub fn test() {
let state_bytes: [u8; 16] = [
0x32, 0x88, 0x31, 0xe0, 0x43, 0x5a, 0x31, 0x37, 0xf6, 0x30, 0x98, 0x07, 0xa8, 0x8d, 0xa2,
0x34,
];
let mut state = State::new(state_bytes);
println!("v0 {:02x?}", state.v0());
println!("v1 {:02x?}", state.v1());
println!("v2 {:02x?}", state.v2());
println!("v3 {:02x?}", state.v3());
println!("u {:02x?}", state.u(2));
}