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