コード例 #1
0
ファイル: RSA_File_manager.cs プロジェクト: thanhhai1011/RSA
        private static void create_keys()
        {
            string idkeys = create_id();

            id = idkeys;
            List <string> list_keys = Generate_Keys.genertate_key(idkeys);

            rsa = Generate_Keys.load_keys(idkeys);
        }
コード例 #2
0
ファイル: Usercontroller.cs プロジェクト: thanhhai1011/RSA
        internal static string decypt_text(string text, string key)
        {
            rsa = Generate_Keys.load_keysFile(key);
            string[] text_array = text.Split('\n');

            List <string> result = new List <string>();

            foreach (string line in text_array)
            {
                try
                {
                    if (line != " ")
                    {
                        string[] test = line.Trim().Split(' ');

                        int[]  myInts = Array.ConvertAll(test, s => int.Parse(s));
                        byte[] bytes  = new byte[myInts.Length];
                        for (int i = 0; i < myInts.Length; i++)
                        {
                            bytes[i] = (byte)myInts[i];
                        }

                        byte[] decryptMsg = rsa.PublicDecryption(bytes);
                        string de_string  = Encoding.UTF8.GetString(decryptMsg);
                        if (de_string.StartsWith("k@"))
                        {
                            de_string = de_string.Substring(2, de_string.Length - 2);
                        }
                        result.Add(de_string);
                        //rsa = Generate_Keys.load_keys1(id);
                        //byte[] decryptMsg = rsa.PublicDecryption(test1);
                        //string de_string = Encoding.UTF8.GetString(decryptMsg);
                    }
                }
                catch
                {
                    Console.WriteLine(1);
                }
            }
            string[] test1      = result.ToArray();
            string   enc_result = String.Join("", test1);

            return(enc_result);
        }
コード例 #3
0
ファイル: RSA_File_manager.cs プロジェクト: thanhhai1011/RSA
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            string text = e_text;

            create_keys();
            int           j             = 0;
            int           i             = 0;
            List <string> get_list_text = new List <string>();

            while (i < text.Length)
            {
                if (j == 50)
                {
                    get_list_text.Add(text.Substring(i - 50, 50));
                    j = 0;
                }
                else
                {
                    j += 1;
                    i += 1;
                }
            }
            int r = text.Length - get_list_text.Count * 50;

            get_list_text.Add(text.Substring(text.Length - r, r));
            string[] line_text = get_list_text.ToArray();

            int           i1 = 0;
            List <string> k  = new List <string>();

            foreach (string line in line_text)
            {
                i1 += 1;

                byte[] message = Encoding.UTF8.GetBytes(line);
                rsa = Generate_Keys.load_keys(id);
                byte[] new_enc_byte = rsa.PrivateEncryption(message);
                byte[] decryptMsg   = rsa.PublicDecryption(new_enc_byte);
                string de_string    = Encoding.UTF8.GetString(decryptMsg);
                string test_string  = line;
                while (de_string != test_string)
                {
                    string a = "";
                    test_string  = "k@" + line;
                    message      = Encoding.UTF8.GetBytes(test_string);
                    new_enc_byte = rsa.PrivateEncryption(message);
                    decryptMsg   = rsa.PublicDecryption(new_enc_byte);
                    de_string    = Encoding.UTF8.GetString(decryptMsg);
                }
                int[]         bytesAsInts = new_enc_byte.Select(x => (int)x).ToArray();
                List <string> new_lne     = new List <string>();
                foreach (int a in bytesAsInts)
                {
                    new_lne.Add(a.ToString());
                }
                k.Add(String.Join(" ", new_lne));
                double rep   = Convert.ToDouble(i1) / Convert.ToDouble(line_text.Length);
                int    rport = Convert.ToInt32(rep * 100);
                backgroundWorker1.ReportProgress(rport);
            }
            string[] test   = k.ToArray();
            string[] check1 = { String.Join("\n", test), id };
            result1 = check1;
        }