using System; namespace SoundForce.ApiSigner { /// /// 签名算法类型 /// public enum SignatureAlgorithm { /// /// MD5算法(默认、最快) /// Md5, /// /// SHA1算法 /// Sha1, /// /// SHA256算法 /// Sha256, /// /// HMAC-SHA256算法(最安全) /// HmacSha256 } /// /// 签名算法扩展方法 /// public static class SignatureAlgorithmExtensions { /// /// 从字符串解析算法类型 /// /// 算法字符串 /// 签名算法枚举 /// 如果算法无效 public static SignatureAlgorithm FromString(string? algorithm) { if (string.IsNullOrEmpty(algorithm)) return SignatureAlgorithm.Md5; return algorithm.ToUpperInvariant() switch { "MD5" => SignatureAlgorithm.Md5, "SHA1" => SignatureAlgorithm.Sha1, "SHA256" => SignatureAlgorithm.Sha256, "HMAC_SHA256" => SignatureAlgorithm.HmacSha256, "HMACSHA256" => SignatureAlgorithm.HmacSha256, "HMAC-SHA256" => SignatureAlgorithm.HmacSha256, _ => throw new ArgumentException($"无效的签名算法: {algorithm}", nameof(algorithm)) }; } /// /// 获取算法的字符串表示 /// /// 签名算法 /// 算法的字符串表示 public static string ToString(this SignatureAlgorithm algorithm) { return algorithm switch { SignatureAlgorithm.Md5 => "MD5", SignatureAlgorithm.Sha1 => "SHA1", SignatureAlgorithm.Sha256 => "SHA256", SignatureAlgorithm.HmacSha256 => "HMAC-SHA256", _ => "UNKNOWN" }; } } }