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);
        }
Exemplo n.º 2
0
        public KalynaBlock Encrypt(KalynaBlock plainText)
        {
            var cipherText = new KalynaBlock(plainText);

            cipherText.AddRoundKey(RoundsKeys[0]);

            for (var i = 1; i <= 9; i++)
            {
                cipherText.SubBytes(StaticTables.kalynaForwardSBoxes);

                cipherText.ShiftRows();

                cipherText.MixColumns(StaticTables.Mds);

                cipherText.Xor(RoundsKeys[i]);
            }

            cipherText.SubBytes(StaticTables.kalynaForwardSBoxes);

            cipherText.ShiftRows();

            cipherText.MixColumns(StaticTables.Mds);

            cipherText.AddRoundKey(RoundsKeys[10]);

            return(cipherText);
        }
Exemplo n.º 3
0
        private KalynaBlock GenerateKt()
        {
            var kt = new KalynaBlock(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5 });

            kt.AddRoundKey(Key);

            kt.SubBytes(StaticTables.kalynaForwardSBoxes);

            kt.ShiftRows();

            kt.MixColumns(StaticTables.Mds);

            kt.Xor(Key);

            kt.SubBytes(StaticTables.kalynaForwardSBoxes);

            kt.ShiftRows();

            kt.MixColumns(StaticTables.Mds);

            kt.AddRoundKey(Key);

            kt.SubBytes(StaticTables.kalynaForwardSBoxes);

            kt.ShiftRows();

            kt.MixColumns(StaticTables.Mds);

            kt = new KalynaBlock
            {
                Data = new List <byte>
                {
                    0x7D, 0xD8, 0xE2, 0x38, 0x2F, 0xBC, 0x5C, 0xD0,
                    0xA1, 0x5B, 0x77, 0x3B, 0x65, 0x1F, 0x2F, 0x86
                }
            };

            return(kt);
        }