public String Encode(String input) { //1. extract input into parts int start = 0; List <String> parts = new List <String>(); while (start < input.Length) { int pLen = Rando.RandomInt(this.MinPartLength, this.MaxPartLength); if (start + pLen >= input.Length) { parts.Add(input.Substring(start)); } else { parts.Add(input.Substring(start, pLen)); } start += pLen; } //2. shuffle order of parts String[] list = parts.ToArray(); int[] order; this.Shuffle(ref list, out order); //3. return concatenation of parts and ordering in given language return(LanguageFactory.EncodeToStringReorder(Language.Powershell, list, order)); }