✨ 添加C#实现的API签名工具,包括核心库、命令行工具和使用文档,支持多种签名算法和环境变量配置。
This commit is contained in:
76
csharp/src/ApiSigner/SignatureAlgorithm.cs
Normal file
76
csharp/src/ApiSigner/SignatureAlgorithm.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
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"
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user