Ejemplo n.º 1
0
        private void btnCalcN_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtQ.Text) || string.IsNullOrEmpty(txtP.Text))
            {
                MessageBox.Show("Giá trị Q và P không được bỏ trống ", "Lỗi nhập tham sô đầu vào", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            Int64  numberP = 0, numberQ = 0;
            string inputP = txtP.Text, inputQ = txtQ.Text;

            if (!Int64.TryParse(inputP, out numberP) || numberP <= 0 || !Rsa.IsPrimeNumber(numberP))
            {
                MessageBox.Show("Giá trị P không hợp lệ. P phải là số nguyên tố.", "Lỗi nhập tham sô đầu vào", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }
            if (!Int64.TryParse(inputQ, out numberQ) || numberQ <= 0 || !Rsa.IsPrimeNumber(numberQ))
            {
                MessageBox.Show("Giá trị Q không hợp lệ. Q phải là số nguyên tố.", "Lỗi nhập tham sô đầu vào", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }
            if (numberP == numberQ)
            {
                MessageBox.Show("Giá trị Q và P không được trùng nhau.", "Lỗi nhập tham sô đầu vào", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            var numberN = Rsa.CalculatePublicModule(numberP, numberQ);

            if (numberN <= 0)
            {
                MessageBox.Show("Giá trị tính toán quá lớn hoặc thông sô đầu vào không hợp lệ.", "Lỗi trong quá trình tính toán", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            txtEuler.Text    = Rsa.CalculateEuler(Convert.ToInt64(txtP.Text), Convert.ToInt64(txtQ.Text)).ToString();
            txtN.Text        = numberN.ToString();
            btnCalcE.Enabled = true;
            btnCalcD.Enabled = false;
        }