26 lines
927 B
C#
26 lines
927 B
C#
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();
|
|
}
|
|
}
|