添加C#实现的API签名工具,包括核心库、命令行工具和使用文档,支持多种签名算法和环境变量配置。

This commit is contained in:
SF-bytebytebrew
2025-05-21 16:39:06 +08:00
parent f9f75b7a02
commit f6186868b7
9 changed files with 890 additions and 0 deletions

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