public AesMatrix GetSimpleXOR() { var simpleXor = new AesMatrix(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { simpleXor.matrix[i, j] = Convert.ToByte( this.key.matrix[i, j] ^ this.simpleText.matrix[i, j] ); } } return(simpleXor); }
private void Button3_Click(object sender, EventArgs e) { var simpleTextBytes = File.ReadAllBytes(this.textBox1.Text); Console.WriteLine("Lendo texto simples da pasta " + this.textBox1.SelectedText); var keyBytes = File.ReadAllBytes(this.textBox2.Text); Console.WriteLine("Lendo chave da pasta " + this.textBox1.SelectedText); var key = new AesMatrix(keyBytes); var simpleTextMatrix = new ByteMatrix(simpleTextBytes); Console.WriteLine("teste"); Console.WriteLine(simpleTextMatrix.byteMatrix.Count); byte[] bte = new byte[simpleTextMatrix.byteMatrix.Count * 16]; var loop = 1; foreach (var simpleText in simpleTextMatrix.byteMatrix) { Console.WriteLine("****Chave****"); key.Print(); Console.WriteLine("****Texto simples****"); simpleText.Print(); var keyScheduler = new RoundKey(key).getAesMatrixCifred(); var simpleXor = new SimpleXor(key, simpleText).GetSimpleXOR(); var cifred = new MatrixRoundKey(simpleXor).GetRounds(keyScheduler); Console.WriteLine("****Texto cifrado****"); cifred.Print(); for (var i = 0; i < 4; i++) { for (int b = 0; b < 4; b++) { bte[b * loop] = cifred.matrix[b, i]; } } loop++; } File.Create(this.textBox3.Text); File.WriteAllBytes(this.textBox3.Text, bte); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Texto cifrado salvo na pasta " + this.textBox3.Text); Console.ForegroundColor = ConsoleColor.White; }
private AesMatrix PrintKeyScheduler(int roundKey) { Console.WriteLine(String.Format("*****Round Key {0} ******", roundKey)); var initialKey = ((roundKey + 1) * 4) - 4; AesMatrix matrix = new AesMatrix(); for (int i = 0; i < 4; i++) { for (int j = initialKey; j < (roundKey + 1) * 4; j++) { Console.Write(this.keyScheduler[i, j].ToString("X2") + " "); if ((roundKey + 1) * 4 == 44) { matrix.matrix[i, j - 40] = this.keyScheduler[i, j]; } } Console.WriteLine(); } return(matrix); }
public SimpleXor(AesMatrix key, AesMatrix simpleText) { this.key = key; this.simpleText = simpleText; }
public RoundKey(AesMatrix aesMatrix) { this.aesMatrix = aesMatrix; this.keyScheduler = new byte[4, 44]; }
public MatrixRoundKey(AesMatrix crifredText) { this.crifredText = crifredText; }