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); }
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); }
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); }