using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace PluginManager.Others; public class Cryptography { /// /// Translate hex to string /// /// The encrypted string /// public static string FromHexToString(string hexString) { var bytes = new byte[hexString.Length / 2]; for (var i = 0; i < bytes.Length; i++) bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return Encoding.Unicode.GetString(bytes); } /// /// Translate string to hex /// /// The string to encrypt /// public static string ToHexString(string str) { var sb = new StringBuilder(); var bytes = Encoding.Unicode.GetBytes(str); foreach (var t in bytes) sb.Append(t.ToString("X2")); return sb.ToString(); } /// /// Create MD5 hash /// /// The text to encrypt /// public static async Task CreateMD5(string text) { var output = ""; using (var md5 = MD5.Create()) { using (var s = GenerateStreamFromString(text)) { var t = await md5.ComputeHashAsync(s); output = Convert.ToBase64String(t); } } return output; } /// /// Create SHA256 hash /// /// The text to encrypt /// public static async Task CreateSHA256(string text) { var output = ""; using (var sha = SHA256.Create()) { using (var s = GenerateStreamFromString(text)) { var t = await sha.ComputeHashAsync(s); output = Convert.ToBase64String(t); } } return output; } private static Stream GenerateStreamFromString(string s) { var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; } }