public void Inverse_InversessValues_Inversed() { uint[] values = { 0x78722bdf, 0xaed473aa, 0xf15a1932, 0x025d42dd }; uint[] expected = { 0x014aba55, 0x0020c5e4, 0x00000b83, 0x0051e7d5 }; uint[] result = LinearTransformator.Inverse(values); CollectionAssert.AreEqual(expected, result); }
private uint[] Rounds(uint[] words) { for (int i = 0; i < 31; i++) { words = words.XOR(_key.K[i].Words); words = _sBox.Substitute(words[0], words[1], words[2], words[3], i % 8); words = LinearTransformator.Transform(words); } return(words); }
private uint[] InverseRounds(uint[] words) { int sBoxIndex = 6; for (int i = 31; i >= 1; i--) { words = LinearTransformator.Inverse(words.XOR(_key.K[i].Words)); words = _sBox.Inverse(words[0], words[1], words[2], words[3], sBoxIndex--); if (sBoxIndex < 0) { sBoxIndex = 7; } } words = words.XOR(_key.K[0].Words); return(words); }
public void Transform_TransformsValues_Transformed() { uint[] values = { 0x014aba55, 0x0020c5e4, 0x00000b83, 0x0051e7d5 }; uint[] expected = { 0x78722bdf, 0xaed473aa, 0xf15a1932, 0x025d42dd }; CollectionAssert.AreEqual(expected, LinearTransformator.Transform(values)); }