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(); }
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(); }
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(); }