예제 #1
0
        public static string Decrypt(this string message, int[] keyLength)
        {
            Contract.Assert(message != null);

            string output = String.Empty;

            for (int i = 0; i < message.Length; i++)
            {
                output += Alphabet[(Alphabet.IndexOf(message[i]) + Alphabet.Length - keyLength[i % keyLength.Length]) % Alphabet.Length];
            }
            return(output);
        }
예제 #2
0
        public static string Decrypt(this string message, string key)
        {
            Contract.Assert(message != null && key != null);
            //var keyInAlphabetIndex = key.Select(x => Alphabet.IndexOf(Alphabet[(Alphabet.Length - Alphabet.IndexOf(x)) % Alphabet.Length])).ToArray();
            var keyInAlphabetIndex = key.Select(x => Alphabet.IndexOf(x)).ToArray();

            string output = String.Empty;

            for (int i = 0; i < message.Length; i++)
            {
                output += Alphabet[(Alphabet.IndexOf(message[i]) + Alphabet.Length - keyInAlphabetIndex[i % keyInAlphabetIndex.Length]) % Alphabet.Length];
            }
            return(output);
        }
        public string Encode(string stringToEncode)
        {
            if (stringToEncode.Any(n => !Alphabet.Contains(n) && !Separators.Contains(n)))
            {
                throw new Exception("Finded symbol not from alphabet - ");
            }
            string s = string.Empty;

            for (int i = 0; i < stringToEncode.Length; i++)
            {
                if (Separators.Any(n => n == stringToEncode[i]))
                {
                    s += stringToEncode[i];
                }
                else
                {
                    s += LookupTable[i % KeyWord.Length][Alphabet.IndexOf(stringToEncode[i])];
                }
            }
            return(s);
        }