| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using System.Security.Cryptography;
- using System.Text;
- namespace Application.Helpers;
- /// <summary>
- /// 개발자 포털용 ClientID/Secret/PAT 생성 및 해시 헬퍼.
- /// </summary>
- public static class ApiTokenGenerator
- {
- private const string Base62Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- public static string GenerateClientID() => "dpot_client_" + RandomBase62(24);
- public static string GenerateClientSecret() => "dpot_secret_" + RandomBase62(40);
- public static string GeneratePat() => "dpot_pat_" + RandomBase62(40);
- public static string Hash(string token)
- {
- var bytes = Encoding.UTF8.GetBytes(token);
- var hash = SHA256.HashData(bytes);
- return Convert.ToHexString(hash).ToLowerInvariant();
- }
- public static string Hint(string token) => token.Length >= 4 ? token[^4..] : token;
- private static string RandomBase62(int length)
- {
- var sb = new StringBuilder(length);
- var bytes = RandomNumberGenerator.GetBytes(length);
- foreach (var b in bytes)
- {
- sb.Append(Base62Chars[b % Base62Chars.Length]);
- }
- return sb.ToString();
- }
- }
|