private void btn_gen_d_Click(object sender, System.Windows.RoutedEventArgs eargs)
        {
            long m = ed_var_m.Value.Value;
            long e = ed_var_e.Value.Value;

            ed_var_d.Value = RSAHelper.GetMultInv(e, m);
        }
        private void testValues()
        {
            if (!intialized)
            {
                return;
            }

            SolidColorBrush b_true  = new SolidColorBrush(Colors.Green);
            SolidColorBrush b_false = new SolidColorBrush(Colors.Red);

            long p = ed_var_p.Value.Value;
            long q = ed_var_q.Value.Value;
            long n = ed_var_n.Value.Value;
            long m = ed_var_m.Value.Value;
            long e = ed_var_e.Value.Value;
            long d = ed_var_d.Value.Value;

            ell_test_p.Fill = RSAHelper.IsPrime(p) ? b_true : b_false;
            ell_test_q.Fill = RSAHelper.IsPrime(q) ? b_true : b_false;

            ell_test_n.Fill = (n == p * q) ? b_true : b_false;
            ell_test_m.Fill = (m == (p - 1) * (q - 1)) ? b_true : b_false;

            ell_test_e.Fill = RSAHelper.GGT(e, m) == 1 ? b_true : b_false;

            ell_test_d.Fill = (m != 0 && (e * d) % m == 1) ? b_true : b_false;

            bool correct = RSAHelper.IsPrime(p) && RSAHelper.IsPrime(q) && (n == p * q) && (m == (p - 1) * (q - 1)) && (RSAHelper.GGT(e, m) == 1) && (m != 0 && (e * d) % m == 1);

            lblPublicKey.Content  = correct ? string.Format("PUBLIC KEY = (e|N) = ({0}|{1})", e, n) : "ERROR";
            lblPrivateKey.Content = correct ? string.Format("PRIVATE KEY = (d|N) = ({0}|{1})", d, n) : "ERROR";
        }
        private void Button_Click(object sender, System.Windows.RoutedEventArgs eargs)
        {
            string plain = edPlainText.Text;

            StringBuilder numberBuilder = new StringBuilder();
            StringBuilder cryptBuilder  = new StringBuilder();

            int count = 0;

            foreach (char chr in plain)
            {
                char cr = char.ToUpper(chr);

                if (cr == ' ')
                {
                    numberBuilder.Append("00");
                    cryptBuilder.Append("00");
                }
                else if (cr >= 'A' && cr <= 'Z')
                {
                    numberBuilder.AppendFormat("{0:00}", (int)(cr - 'A' + 1));
                    cryptBuilder.AppendFormat("{0:00}", (int)(cr - 'A' + 1));
                }

                numberBuilder.Append(" ");

                if (count++ == 2)
                {
                    cryptBuilder.Append(" ");
                    count = 0;
                }
            }

            edNumberized.Text   = numberBuilder.ToString();
            edPlainNumbers.Text = cryptBuilder.ToString();


            //###############

            long e = ed_Key_e.Value.Value;
            long n = ed_Key_n.Value.Value;

            StringBuilder readyBuilder = new StringBuilder();

            foreach (int b in cryptBuilder.ToString().Split(' ').Where(p => RSAHelper.isInt(p)).Select(p => Convert.ToInt64(p)).ToList())
            {
                string dbgout  = "";
                string dbgout2 = "";
                long   v       = RSAHelper.BinaryModuloPow(b, e, n, ref dbgout, ref dbgout2);

                readyBuilder.AppendFormat("{0:000000} ", v);
            }

            edCryptNumbers.Text = readyBuilder.ToString();
        }
Beispiel #4
0
        private void Button_Click(object sender, System.Windows.RoutedEventArgs eargs)
        {
            long d = ed_Key_d.Value.Value;
            long n = ed_Key_n.Value.Value;

            string code = edCryptNumbers.Text;

            StringBuilder readyBuilder = new StringBuilder();

            foreach (int b in code.Split(' ').Where(p => RSAHelper.isInt(p)).Select(p => Convert.ToInt64(p)).ToList())
            {
                string dbgout  = "";
                string dbgout2 = "";
                long   v       = RSAHelper.BinaryModuloPow(b, d, n, ref dbgout, ref dbgout2);

                readyBuilder.AppendFormat("{0:000000} ", v);
            }
            edNumberized.Text = readyBuilder.ToString();

            StringBuilder numberBuilder = new StringBuilder();

            foreach (int b in readyBuilder.ToString().Split(' ').Where(p => RSAHelper.isInt(p)).Select(p => Convert.ToInt64(p)).ToList())
            {
                numberBuilder.AppendFormat("{0:00} ", (b / 10000) % 100);
                numberBuilder.AppendFormat("{0:00} ", (b / 100) % 100);
                numberBuilder.AppendFormat("{0:00} ", (b / 1) % 100);
            }
            edPlainNumbers.Text = numberBuilder.ToString();

            StringBuilder textBuilder = new StringBuilder();

            foreach (int b in numberBuilder.ToString().Split(' ').Where(p => RSAHelper.isInt(p)).Select(p => Convert.ToInt64(p)).ToList())
            {
                if (b == 0)
                {
                    textBuilder.Append(' ');
                }
                else
                {
                    textBuilder.Append((char)('A' + (b - 1)));
                }
            }

            edPlainText.Text = textBuilder.ToString();
        }
Beispiel #5
0
        private void ed_encode_before_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs <object> eargs)
        {
            if (!intialized)
            {
                return;
            }

            long b = ed_encode_before.Value.Value;

            long e = ed_Key_e.Value.Value;
            long n = ed_Key_n.Value.Value;

            if (e == 0)
            {
                ell_test_encode.Fill = new SolidColorBrush(Colors.Red);
                memoInfo.Text        = "[ERR] e == 0";
                return;
            }

            if (n == 0)
            {
                ell_test_encode.Fill = new SolidColorBrush(Colors.Red);
                memoInfo.Text        = "[ERR] N == 0";
                return;
            }

            if (b >= n)
            {
                ell_test_encode.Fill = new SolidColorBrush(Colors.Red);
                memoInfo.Text        = "[ERR] b >= N";
                return;
            }

            string dbgout  = "";
            string dbgout2 = "";
            long   v       = RSAHelper.BinaryModuloPow(b, e, n, ref dbgout, ref dbgout2);

            ed_encode_after.Value = v;
            ell_test_encode.Fill  = new SolidColorBrush(Colors.Green);


            memoInfo.Text = string.Format("({0}^{1}) % {2}\r\n = {3}\r\n({4})\r\n = {5}", b, e, n, dbgout, dbgout2, v);
        }
        private void btn_gen_e_Click(object sender, System.Windows.RoutedEventArgs eargs)
        {
            long m = ed_var_m.Value.Value;

            ed_var_e.Value = RSAHelper.GetRandomCoprime(m);
        }
 private void btn_gen_q_Click(object sender, System.Windows.RoutedEventArgs eargs)
 {
     ed_var_q.Value = RSAHelper.GetPrime();
 }