Skip to main content

lambda_shield/
lib.rs

1/// Lambda-Shield Core Logic: A Lemma 3 based Stream Cipher.
2pub fn lambda_process(data: &[u8], seed: u64) -> Vec<u8> {
3    let mut n: u128 = if seed == 0 { 42 } else { seed as u128 };
4    let mut result = Vec::with_capacity(data.len());
5
6    for &byte in data {
7        let mut keystream_byte: u8 = 0;
8        for i in 0..8 {
9            if n % 2 == 0 {
10                n /= 2;
11            } else {
12                n = n.wrapping_mul(3).wrapping_add(1);
13                keystream_byte |= 1 << i;
14            }
15            if n <= 1 {
16                n = (seed as u128).wrapping_add(keystream_byte as u128).wrapping_add(i as u128);
17            }
18            if n > (u64::MAX as u128) {
19                n = (n % (u64::MAX as u128)) + 7;
20            }
21        }
22        result.push(byte ^ keystream_byte);
23    }
24    result
25}