Exemplo n.º 1
0
        public KalynaBlock Decrypt(KalynaBlock cipherText)
        {
            var plainText = new KalynaBlock(cipherText);

            plainText.SubRoundKey(RoundsKeys[10]);

            plainText.MixColumns(StaticTables.MdsRev);

            plainText.ShiftRowsRev();

            plainText.SubBytes(StaticTables.kalynaInverseSBoxes);

            for (var i = 9; 1 <= i; --i)
            {
                plainText.Xor(RoundsKeys[i]);

                plainText.MixColumns(StaticTables.MdsRev);

                plainText.ShiftRowsRev();

                plainText.SubBytes(StaticTables.kalynaInverseSBoxes);
            }

            plainText.SubRoundKey(RoundsKeys[0]);
            return(plainText);
        }