1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2024-11-24 04:42:56 +01:00
Minecraft-Phantom-Panel/Utils/Phantom.Utils.Cryptography/TokenGenerator.cs

35 lines
931 B
C#

using System.Security.Cryptography;
using System.Text;
namespace Phantom.Utils.Cryptography;
public static class TokenGenerator {
private const string AllowedCharacters = "25679BCDFGHJKMNPQRSTWXYZ";
private static readonly HashSet<char> AllowedCharacterSet = new (AllowedCharacters);
public static string Create(int length) {
char[] result = new char[length];
for (int i = 0; i < length; i++) {
result[i] = AllowedCharacters[RandomNumberGenerator.GetInt32(AllowedCharacters.Length)];
}
return new string(result);
}
public static byte[] GetBytesOrThrow(string token) {
if (token.Length == 0) {
throw new ArgumentOutOfRangeException(nameof(token), "Invalid token (empty).");
}
foreach (char c in token) {
if (!AllowedCharacterSet.Contains(c)) {
throw new ArgumentOutOfRangeException(nameof(token), "Invalid token: " + token);
}
}
return Encoding.ASCII.GetBytes(token);
}
}