Files
sign-doc/csharp/src/ApiSigner/SignatureAlgorithm.cs

76 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"
};
}
}
}