Example #1
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);
        }