private void buttonCalculate_Click(object sender, EventArgs e) { Regex hexa = new Regex(@"^[0-9A-F]+$"); if (hexa.IsMatch(textBoxNumber1.Text) && hexa.IsMatch(textBoxNumber2.Text) && hexa.IsMatch(textBoxDivisor.Text)) { try { int num1 = textBoxNumber1.Text.HexToInt(); int num2 = textBoxNumber2.Text.HexToInt(); int div = textBoxDivisor.Text.HexToInt(); string bin1 = num1.ToBin(); string bin2 = num2.ToBin(); string binDiv = div.ToBin(); int len = 5 * (bin1.Length + bin2.Length - 1) / 4; string now, binary; string line = DuplicateChar('-', len); dataGridViewCalcBiner.Rows.Clear(); dataGridViewCalcHex.Rows.Clear(); InsertDataGridPolinomial(ToPolinomial(bin1)); binary = InsertSpace(bin1); now = string.Concat(DuplicateChar(' ', len - binary.Length), binary); InsertDataGrid(now); InsertDataGridPolinomial(ToPolinomial(bin2)); binary = InsertSpace(bin2); now = string.Concat(DuplicateChar(' ', len - binary.Length), binary); InsertDataGrid(now); InsertDataGridPolinomial(line); InsertDataGrid(line); string binMul = Multiply(bin1, bin2, bin2.Length - 1); line += "XOR"; InsertDataGridPolinomial(line); InsertDataGrid(line); InsertDataGridPolinomial(ToPolinomial(binMul)); binary = InsertSpace(binMul); now = string.Concat(DuplicateChar(' ', len - binary.Length), binary); InsertDataGrid(now); int ct = 64; if (binMul.Length > 8) { binDiv = string.Concat(binDiv, DuplicateChar('0', binMul.Length - binDiv.Length)); } while (binMul.Length > 8 && ct-- > 0) { InsertDataGridPolinomial(ToPolinomial(binDiv)); binary = InsertSpace(binDiv); now = string.Concat(DuplicateChar(' ', len - binary.Length), binary); InsertDataGrid(now); InsertDataGridPolinomial(line); InsertDataGrid(line); binMul = XOR(binMul, binDiv); InsertDataGridPolinomial(ToPolinomial(binMul)); binary = InsertSpace(binMul); now = string.Concat(DuplicateChar(' ', len - binary.Length), binary); InsertDataGrid(now); while (binMul[0] == '0') { binMul = binMul.Remove(0, 1); binDiv = binDiv.Remove(binDiv.Length - 1, 1); } } int gf = binMul.BinToInt(); InsertDataGridPolinomial(ToPolinomial(binMul)); InsertDataGrid(now + " = " + gf.ToHex() + "(16) = " + Kripto.GF_8_Hexa(num1, num2)); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } else { MessageBox.Show("Hexa tidak valid"); } }