コード例 #1
0
            public override string Criptoanaliza(string s)
            {
                litere L1 = new litere('Z' - 'A' + 1); // aparitia literelor intr-un text oarecare
                litere L2 = new litere('Z' - 'A' + 1); // aparitia literelor in textul criptat

                EnumerareLitere(ref L1, @"Random_text.txt");
                EnumerareLitere(ref L2, @"text_criptat.txt");

                SortareDesc(ref L1);
                SortareDesc(ref L2);

                StringBuilder sb = new StringBuilder();
                int           j;

                for (int i = 0; i < s.Length; i++)
                {
                    if ('A' <= s[i] && s[i] <= 'Z')
                    {
                        // cautam litera potrivita in lista de aparitie
                        for (j = 0; s[i] != L2.caracter[j]; j++)
                        {
                            ;
                        }

                        // adaugam litera corespunzatoara
                        sb.Append(L1.caracter[j]);
                    }
                    else
                    {
                        sb.Append(s[i]);
                    }
                }

                return(sb.ToString());
            }
コード例 #2
0
            private void SortareDesc(ref litere L)
            {
                bool ok = false;
                int  n  = L.caracter.Length;

                do
                {
                    ok = true;
                    for (int i = 0; i < n - 1; i++)
                    {
                        if (L.aparitie[i] < L.aparitie[i + 1])
                        {
                            ok = false;
                            Schimba <float>(ref L.aparitie[i], ref L.aparitie[i + 1]);
                            Schimba <char>(ref L.caracter[i], ref L.caracter[i + 1]);
                        }
                    }
                } while (!ok);
            }
コード例 #3
0
            private void EnumerareLitere(ref litere L, string file)
            {
                L = new litere('Z' - 'A' + 1);
                StreamReader sr = new StreamReader(file);

                char c; int i;

                do
                {
                    c = Convert.ToChar(sr.Read());
                    c = char.ToUpper(c);

                    if ('A' <= c && c <= 'Z')
                    {
                        i = 0;
                        while (c != L.caracter[i])
                        {
                            i++;
                        }

                        L.aparitie[i]++;
                    }
                } while (!sr.EndOfStream);
            }