diff --git a/Zerolauncher.csproj b/Zerolauncher.csproj index adc3e09..b116243 100644 --- a/Zerolauncher.csproj +++ b/Zerolauncher.csproj @@ -50,6 +50,7 @@ + diff --git a/util/SpaceEncoder.cs b/util/SpaceEncoder.cs index 6d759f6..f48dcff 100644 --- a/util/SpaceEncoder.cs +++ b/util/SpaceEncoder.cs @@ -83,4 +83,109 @@ namespace Zerolauncher.util return sb.ToString(); } } + + class UrlEncoder + { + static readonly Dictionary map = new Dictionary { + {'0', (char)8194}, + {'1', (char)8196}, + {'2', (char)8197}, + {'3', (char)8198}, + {'4', (char)8199}, + {'5', (char)8200}, + {'6', (char)8201}, + {'7', (char)8202}, + {'8', (char)8239}, + {'9', (char)8287}, + }; + + static readonly Dictionary map1 = new Dictionary + { + {'.', (char)8192}, + {':', (char)8194}, + }; + + static readonly Dictionary dmap1 = new Dictionary + { + {(char)8192, '.'}, + {(char)8194, ':'}, + }; + + static readonly Dictionary dmap = new Dictionary { + {(char)8194, '0'}, + {(char)8196, '1'}, + {(char)8197, '2'}, + {(char)8198, '3'}, + {(char)8199, '4'}, + {(char)8200, '5'}, + {(char)8201, '6'}, + {(char)8202, '7'}, + {(char)8239, '8'}, + {(char)8287, '9'}, + }; + + static readonly char end_line = (char)8193; + + static readonly char sec_char = (char)32; + + public static string? Encode(string url, out int counter) + { + var sb = new StringBuilder(); + sb.Append(end_line); + counter = 0; + foreach (var item in url) + { + if (map.ContainsKey(item)) sb.Append(map[item]); + else if (map1.ContainsKey(item)) { sb.Append(sec_char); sb.Append(map1[item]); } + else return null; + counter++; + } + sb.Append(end_line); + return sb.ToString(); + } + + public static string? Decode(string space, out int counter) + { + var sb = new StringBuilder(); + counter = 0; + bool is_sec_char = false; + foreach (var item in space) + { + if (counter != 0) + { + if (item == end_line) break; + else if (is_sec_char) + { + if (!dmap1.ContainsKey(item)) return null; + sb.Append(dmap1[item]); + is_sec_char = false; + } + else if (item == sec_char) is_sec_char = true; + else if (dmap.ContainsKey(item)) sb.Append(dmap[item]); + else return null; + } + counter++; + } + return sb.ToString(); + } + } + + + class KeyUrlEncoder + { + static readonly string key = "TestKey123456"; + + public static string XorEncryptDecrypt(string input) + { + char[] output = new char[input.Length]; + + for (int i = 0; i < input.Length; i++) + { + output[i] = (char)(input[i] ^ key[i % key.Length]); + } + + return new string(output); + } + + } }