Esempio n. 1
0
        private void RSA_taoKhoa()
        {
            //Tinh n=p*q
            RSA_soN  = RSA_soP * RSA_soQ;
            soN.Text = RSA_soN.ToString();
            //Tính Phi(n)=(p-1)*(q-1)
            RSA_soPhi_n = (RSA_soP - 1) * (RSA_soQ - 1);
            soPhiN.Text = RSA_soPhi_n.ToString();
            //Tính e là một số ngẫu nhiên có giá trị 0< e <phi(n) và là số nguyên tố cùng nhau với Phi(n)
            do
            {
                if (soE.Text == "")
                {
                    Random RSA_rd = new Random();
                    RSA_soE = RSA_rd.Next(2, RSA_soPhi_n);
                }
                else
                {
                    RSA_soE = int.Parse(soE.Text);
                }
            }while (!nguyenToCungNhau(RSA_soE, RSA_soPhi_n));
            soE.Text = RSA_soE.ToString();

            //Tính d là nghịch đảo modular của e
            RSA_soD = 0;
            int i = 2;

            while (((1 + i * RSA_soPhi_n) % RSA_soE) != 0 || RSA_soD <= 0)
            {
                i++;
                RSA_soD = (1 + i * RSA_soPhi_n) / RSA_soE;
            }
            soD.Text = RSA_soD.ToString();
        }
        private void F_rsa_TaoKhoa_Click(object sender, RoutedEventArgs e)
        {
            btChonFileKy_RSA.IsEnabled = btChonFileKy_RSA.IsEnabled = btChonFileXacThuc_RSA.IsEnabled = btChonFileXacThuc_RSA.IsEnabled = true;

            F_reset_();
            RSA_soP = RSA_soQ = 0;
            do
            {
                RSA_soP = RSA_ChonSoNgauNhien();
                RSA_soQ = RSA_ChonSoNgauNhien();
            }while (RSA_soP == RSA_soQ || !RSA_kiemTraNguyenTo(RSA_soP) || !RSA_kiemTraNguyenTo(RSA_soQ));
            F_rsa_soP.Text = RSA_soP.ToString();
            F_rsa_soQ.Text = RSA_soQ.ToString();
            F_TaoKhoa();

            F_rsa_soPhiN.Text       = RSA_soPhi_n.ToString();
            F_rsa_soE.Text          = RSA_soE.ToString();
            F_rsa_soD.Text          = RSA_soD.ToString();
            F_rsa_soN.Text          = RSA_soN.ToString();
            F_rsa_d_dau             = 1;
            F_rsa_TaoKhoa.IsEnabled = false;
        }