using System; using System.Security.Cryptography; using System.Text; namespace Binance.TradeRobot.Common.Extensions { public static class CryptographyExtension { public static string ToHmacSha256(this string str, string secret, bool toBase64 = true) { secret = secret ?? ""; byte[] keyByte = Encoding.UTF8.GetBytes(secret); byte[] strBytes = Encoding.UTF8.GetBytes(str); using (var hmacsha256 = new HMACSHA256(keyByte)) { byte[] hashStr = hmacsha256.ComputeHash(strBytes); if (toBase64) return Convert.ToBase64String(hashStr); else { StringBuilder builder = new StringBuilder(); for (int i = 0; i < hashStr.Length; i++) { builder.Append(hashStr[i].ToString("x2")); } return builder.ToString(); } } } public static string ToMD5(this string str, bool isUpper = false) { var format = isUpper ? "X2" : "x2"; //32位大写 using (var md5 = MD5.Create()) { var data = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); StringBuilder builder = new StringBuilder(); // 循环遍历哈希数据的每一个字节并格式化为十六进制字符串 for (int i = 0; i < data.Length; i++) { builder.Append(data[i].ToString(format)); } return builder.ToString(); } } } }