using System.Collections.Generic;
var str = @")<39+•)e$9yn""'••••#*""""vPaO•L•^T_f684•VSYO9:9CKQ•NXfE'AZ[JW]/>6z•VSYO.G'CO\S•Y9t0DYa•\K5IeCU•WJW0C/BIR•FL6J:nM\TI•6AlnJN^X•fD;A•RRFS3t/B•ynIY;C+CLVIIV,t'C•RSYO*=9>RbYNY5He3Ua•HY4•RX";
var cipher = new Cipher();
var decoded = cipher.Decode(str);
Console.WriteLine(decoded);
private const string salt = "NETFiddle";
public string Decode(string mess) {
var outputChars = new string[mess.Length];
for(i=0;i<mess.Length;i++)
var saltCharCode = GetSaltCharCode(i);
var charCode = Char.ConvertToUtf32(mess,i);
var sumCharCode = charCode-saltCharCode;
if(sumCharCode< 0) sumCharCode+=127;
outputChars[i]=Char.ConvertFromUtf32(sumCharCode);
return String.Join("",outputChars);
private int GetSaltCharCode(int i) {
var saltChars = salt.ToCharArray();
Array.Reverse(saltChars);
while(i>=saltChars.Length)
return Char.ConvertToUtf32(saltChars[i].ToString(),0);