// // ServerLoginCryptography.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Text; namespace NosSmooth.Cryptography; /// /// A cryptography used for logging to NosTale server from the server. /// public class ServerLoginCryptography : ICryptography { /// public string Decrypt(in ReadOnlySpan str, Encoding encoding) { try { string decryptedPacket = string.Empty; foreach (byte character in str) { if (character > 14) { decryptedPacket += Convert.ToChar((character - 15) ^ 195); } else { decryptedPacket += Convert.ToChar((256 - (15 - character)) ^ 195); } } return decryptedPacket; } catch { return string.Empty; } } /// public byte[] Encrypt(string packet, Encoding encoding) { try { packet += " "; byte[] tmp = Encoding.Default.GetBytes(packet); for (int i = 0; i < packet.Length; i++) { tmp[i] = Convert.ToByte(tmp[i] + 15); } tmp[tmp.Length - 1] = 25; return tmp; } catch { return Array.Empty(); } } }