private static string TranslatedNumber(string charString, CodeKey_ codeKey, bool above = true) { var number = above ? int.Parse(charString) + (int)codeKey : int.Parse(charString) - (int)codeKey; var translation = Enum.GetValues(typeof(TranslationDescription_)).Cast <TranslationDescription_>().ToList().Find(e => (int)e == number); return(EnumDescription(translation)); }
private static string TranslatedLetter(string charString, CodeKey_ codeKey, bool above = true) { var letter = charString; var translation = Enum.GetValues(typeof(TranslationDescription_)).Cast <TranslationDescription_>().ToList().Find(e => EnumDescription(e) == letter); var number = above ? (int)translation + (int)codeKey : (int)translation - (int)codeKey; return(number.ToString()); }
public static string Encrypt(string decryption, CodeKey_ decodeKey) { var encryption = string.Empty; var temp = string.Empty; var addition = string.Empty; switch (decodeKey) { case CodeKey_.oei_ntla_ltnb_si: decryption.ToList().ForEach(c => { var charString = $"{string.Empty}{c}"; if (Char.IsNumber(c)) { addition = TranslatedNumber(charString, decodeKey); } else if (Char.IsLetter(c)) { addition = TranslatedLetter(charString, decodeKey, above: false); } else { addition = charString; } temp += string.Join(string.Empty, Enumerable.Range(1, (int)decodeKey).Select(n => addition)); }); encryption = temp += (int)decodeKey; break; case CodeKey_.pi_oei_ntlb_ltna: decryption.ToList().ForEach(c => { var charString = $"{string.Empty}{c}"; if (Char.IsNumber(c)) { addition = TranslatedNumber(charString, decodeKey, above: false); } else if (Char.IsLetter(c)) { addition = TranslatedLetter(charString, decodeKey); } else { addition = charString; } temp += string.Join(string.Empty, Enumerable.Range(1, (int)decodeKey).Select(n => addition)); }); encryption = $"{(int)decodeKey} + {temp}"; break; } return(encryption); }
public static string Decrypt(string encryption, CodeKey_ encodeKey) { var decryption = string.Empty; var temp = string.Empty; List <char> distinctEncryption = null; var addition = string.Empty; switch (encodeKey) { case CodeKey_.oei_ntla_ltnb_si: temp = encryption.TrimEnd($"{(int)encodeKey}".ToArray()); distinctEncryption = temp.GroupBy(g => g).Select(c => c.Key).ToList(); distinctEncryption.ToList().ForEach(c => { var charString = $"{string.Empty}{c}"; if (Char.IsNumber(c)) { addition = TranslatedNumber(charString, encodeKey, above: false); } else if (Char.IsLetter(c)) { addition = TranslatedLetter(charString, encodeKey); } else { addition = charString; } decryption += addition; }); break; case CodeKey_.pi_oei_ntlb_ltna: temp = encryption.TrimStart($"{(int)encodeKey}".ToArray()); distinctEncryption = temp.GroupBy(g => g).Select(c => c.Key).ToList(); distinctEncryption.ToList().ForEach(c => { var charString = $"{string.Empty}{c}"; if (Char.IsNumber(c)) { addition = TranslatedNumber(charString, encodeKey); } else if (Char.IsLetter(c)) { addition = TranslatedLetter(charString, encodeKey, above: false); } else { addition = charString; } decryption += addition; }); break; } return(decryption); }