26 lines
927 B
C#
Raw Normal View History

2026-10-28 10:00:12 +08:00
using System.Security.Cryptography;
using System.Text;
namespace YD_Event.Application.CitizenSports;
internal static class CitizenSportsSigner
{
internal static string Create(string clientId, string secretKey, long unixTimestamp)
{
var key = Encoding.UTF8.GetBytes(secretKey);
if (key.Length != 32)
throw new ArgumentException("SecretKey 必须是 32 字节", nameof(secretKey));
var plainText = Encoding.UTF8.GetBytes($"{clientId}_{unixTimestamp}");
using var aes = Aes.Create();
aes.Key = key;
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
using var encryptor = aes.CreateEncryptor();
var encrypted = encryptor.TransformFinalBlock(plainText, 0, plainText.Length);
var base64 = Convert.ToBase64String(encrypted);
return Convert.ToHexString(Encoding.UTF8.GetBytes(base64)).ToLowerInvariant();
}
}