76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
using System;
|
||
|
||
namespace SoundForce.ApiSigner
|
||
{
|
||
/// <summary>
|
||
/// 签名算法类型
|
||
/// </summary>
|
||
public enum SignatureAlgorithm
|
||
{
|
||
/// <summary>
|
||
/// MD5算法(默认、最快)
|
||
/// </summary>
|
||
Md5,
|
||
|
||
/// <summary>
|
||
/// SHA1算法
|
||
/// </summary>
|
||
Sha1,
|
||
|
||
/// <summary>
|
||
/// SHA256算法
|
||
/// </summary>
|
||
Sha256,
|
||
|
||
/// <summary>
|
||
/// HMAC-SHA256算法(最安全)
|
||
/// </summary>
|
||
HmacSha256
|
||
}
|
||
|
||
/// <summary>
|
||
/// 签名算法扩展方法
|
||
/// </summary>
|
||
public static class SignatureAlgorithmExtensions
|
||
{
|
||
/// <summary>
|
||
/// 从字符串解析算法类型
|
||
/// </summary>
|
||
/// <param name="algorithm">算法字符串</param>
|
||
/// <returns>签名算法枚举</returns>
|
||
/// <exception cref="ArgumentException">如果算法无效</exception>
|
||
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))
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取算法的字符串表示
|
||
/// </summary>
|
||
/// <param name="algorithm">签名算法</param>
|
||
/// <returns>算法的字符串表示</returns>
|
||
public static string ToString(this SignatureAlgorithm algorithm)
|
||
{
|
||
return algorithm switch
|
||
{
|
||
SignatureAlgorithm.Md5 => "MD5",
|
||
SignatureAlgorithm.Sha1 => "SHA1",
|
||
SignatureAlgorithm.Sha256 => "SHA256",
|
||
SignatureAlgorithm.HmacSha256 => "HMAC-SHA256",
|
||
_ => "UNKNOWN"
|
||
};
|
||
}
|
||
}
|
||
} |