Пример #1
0
 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);
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 public void Transform_TransformsValues_Transformed()
 {
     uint[] values   = { 0x014aba55, 0x0020c5e4, 0x00000b83, 0x0051e7d5 };
     uint[] expected = { 0x78722bdf, 0xaed473aa, 0xf15a1932, 0x025d42dd };
     CollectionAssert.AreEqual(expected, LinearTransformator.Transform(values));
 }