Changeset 774


Ignore:
Timestamp:
Oct 23, 2009, 11:51:29 PM (12 years ago)
Author:
kohnen
Message:

added some encryption/decryption functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/Transposition/Transposition.cs

    r767 r774  
    201201                }
    202202            }
     203
    203204            return enc;
    204205        }
     
    257258                }
    258259            }
    259 
    260260            String dec = "";
     261
     262            // Spaltenweise auslesen
     263            // Read by line
    261264            for (int j = 0; j < hoehe; j++)
    262265            {
     
    266269                }
    267270            }
     271            // Ende Spaltenweise auslesen
    268272            return dec;
    269273        }
    270274
     275        private char[,] enc_read_in_by_row(String input, int keyword_length)
     276        {
     277            int size = input.Length / keyword_length;
     278
     279            if (input.Length % keyword_length != 0)
     280            {
     281                size++;
     282            }
     283
     284            int pos = 0;
     285
     286            char[,] matrix = new char[keyword_length, size];
     287            for (int i = 0; i < size; i++)
     288            {
     289                for (int j = 0; j < keyword_length; j++)
     290                {
     291                    if (pos < input.Length)
     292                    {
     293                        matrix[j, i] = input[pos];
     294                        pos++;
     295                    }                   
     296                }
     297            }
     298
     299            return matrix;
     300        }
     301
     302        private char[,] enc_read_in_by_column(String input, int keyword_length)
     303        {
     304            int size = input.Length / keyword_length;
     305            int offs = input.Length % keyword_length;
     306            if (offs != 0)
     307            {
     308                size++;
     309            }
     310
     311            int pos = 0;
     312
     313            char[,] matrix = new char[keyword_length, size];
     314            for (int i = 0; i < keyword_length; i++)
     315            {
     316                for (int j = 0; j < size; j++)
     317                {
     318                    if (pos < input.Length)
     319                    {
     320                        if (offs > 0 && j == size - 1 && i >= offs) { }
     321                        else
     322                        {
     323                            matrix[i, j] = input[pos];
     324                            pos++;
     325                        }
     326                    }
     327                }
     328            }
     329
     330            return matrix;
     331        }
     332
     333        private char[,] dec_read_in_by_row(String input, int[] keyword)
     334        {
     335            int size = input.Length / keyword.Length;
     336
     337            int offs = input.Length % keyword.Length;
     338            if (offs != 0)
     339            {
     340                size++;
     341            }
     342
     343            char[,] matrix = new char[keyword.Length, size];
     344            int pos = 0;
     345
     346            for (int i = 0; i < keyword.Length; i++)
     347            {
     348                for (int j = 0; j < size; j++)
     349                {
     350                    if (pos < input.Length)
     351                    {
     352                        if ((!offs.Equals(0)) && j.Equals(size - 1))
     353                        {
     354                            bool ok = false;
     355
     356                            for (int k = 0; k < offs; k++)
     357                            {
     358                                Console.WriteLine(k);
     359                                if((keyword[k]-1).Equals(i))
     360                                {
     361                                    ok = true;
     362                                }
     363                            }
     364
     365                            if (ok)
     366                            {
     367                                matrix[i, j] = input[pos];
     368                                pos++;
     369                            }
     370
     371                        }
     372                        else
     373                        {
     374                            matrix[i, j] = input[pos];
     375                            pos++;
     376                        }
     377                    }
     378                }
     379            }
     380
     381
     382            return matrix;
     383        }
     384
     385        private char[,] dec_read_in_by_column(String input, int[] keyword)
     386        {
     387            int size = input.Length / keyword.Length;
     388
     389            int offs = input.Length % keyword.Length;
     390            if (offs != 0)
     391            {
     392                size++;
     393            }
     394
     395            char[,] matrix = new char[keyword.Length, size];
     396            int pos = 0;
     397
     398            for (int i = 0; i < size; i++)
     399            {
     400                for (int j = 0; j < keyword.Length; j++)
     401                {
     402                    if (pos < input.Length)
     403                    {
     404                        if ((!offs.Equals(0)) && i.Equals(size - 1))
     405                        {
     406                            bool ok = false;
     407
     408                            for (int k = 0; k < offs; k++)
     409                            {
     410                                Console.WriteLine(k);
     411                                if ((keyword[k] - 1).Equals(j))
     412                                {
     413                                    ok = true;
     414                                }
     415                            }
     416
     417                            if (ok)
     418                            {
     419                                matrix[j, i] = input[pos];
     420                                pos++;
     421                            }
     422
     423                        }
     424                        else
     425                        {
     426                            matrix[j, i] = input[pos];
     427                            pos++;
     428                        }
     429                    }
     430                }
     431            }
     432
     433
     434            return matrix;
     435        }
     436
     437        private char[,] enc_permut_by_column(char[,] readin_matrix, int[] keyword)
     438        {
     439            int x = keyword.Length;
     440            int y = readin_matrix.Length / keyword.Length;
     441
     442            char[,] matrix = new char[x,y];
     443
     444            int pos = 0;
     445
     446            for (int i = 1; i <= keyword.Length; i++)
     447            {
     448                for (int j = 0; j < keyword.Length; j++)
     449                {
     450                    if(i.Equals(keyword[j]))
     451                    {
     452                        Console.WriteLine("true");
     453                        pos = j;
     454                    }
     455                }
     456
     457                for (int j = 0; j < y; j++)
     458                {
     459                    matrix[i - 1, j] = readin_matrix[pos, j];
     460                }
     461            }
     462
     463            return matrix;
     464        }
     465
     466        private String enc_read_out_by_row(char[,] matrix, int keyword_length)
     467        {
     468            int x = keyword_length;
     469            int y = matrix.Length / keyword_length;
     470
     471            String enc = "";
     472            char empty_char = new char();
     473
     474            for (int i = 0; i < y; i++)
     475            {
     476                for (int j = 0; j < x; j++)
     477                {
     478                    char tmp = matrix[j, i];
     479                    if (! tmp.Equals(empty_char))
     480                    {
     481                        enc += tmp;
     482                    }
     483                }
     484            }
     485
     486            return enc;
     487        }
     488
     489        private String enc_read_out_by_column(char[,] matrix, int keyword_length)
     490        {
     491            int x = keyword_length;
     492            int y = matrix.Length / keyword_length;
     493
     494            String enc = "";
     495            char empty_char = new char();
     496
     497            for (int i = 0; i < x; i++)
     498            {
     499                for (int j = 0; j < y; j++)
     500                {
     501                    char tmp = matrix[i, j];
     502                    if (!tmp.Equals(empty_char))
     503                    {
     504                        enc += tmp;
     505                    }
     506                }
     507            }
     508
     509            return enc;
     510        }
     511
     512        private int[] get_Keyword_Array(String keyword)
     513        {
     514            int length = keyword.Length/2 + 1;
     515            int[] keys = new int[length];
     516
     517            for (int i = 0; i < keyword.Length; i = i + 2)
     518            {
     519                keys[i / 2] = (int)Char.GetNumericValue(keyword[i]);
     520            }
     521
     522            return keys;
     523        }
     524
     525        private bool is_Valid_Keyword(int[] keyword)
     526        {
     527            for (int i = 1; i <= keyword.Length; i++)
     528            {
     529                bool exists = false;
     530
     531                for (int j = 0; j < keyword.Length; j++)
     532                {
     533                    if (i.Equals(keyword[j]))
     534                    {
     535                        exists = true;
     536                    }
     537                }
     538
     539                if (!exists)
     540                {
     541                    return false;
     542                }
     543            }
     544
     545            return true;
     546        }
     547    }
    271548        # endregion
    272549    }
Note: See TracChangeset for help on using the changeset viewer.