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