Как конвертировать из string в byte
Random random = new Random();
byte[] RandomKey = new byte[32];
string RandomKeyString = "0x";
for (int i = 0; i < 32; i++)
{
if (random.Next(0, 2) == 0)
{
RandomKeyString += random.Next(0, 11).ToString();
}
else
{
RandomKeyString += letter[random.Next(0, 26)];
}
if (random.Next(0, 2) == 0)
{
RandomKeyString += random.Next(0, 11).ToString();
}
else
{
RandomKeyString += letter[random.Next(0, 26)];
}
RandomKey[i] = RandomKeyString;
}
На выходе из переменной RandomKeyString должно получится что-то похожее на 0xFF или 0x5E Нужно записать в переменную RandomKey значение из RandomKeyString.
Генерировать ключи шифрования с помощью Random категорически нельзя, так как этот PRNG не является криптостойким. Для генерации криптографических артефактов, состоящих из рандомных байт есть RandomNumberGenerator из пространства имён System.Security.Cryptography.
А делается это так:
var rng = RandomNumberGenerator.Create(); byte[] randomKey = rng.GetBytes(32);
Получим массив 32 случайных байта.
Если надо вывести в строку в HEX формате:
string hex = Convert.ToHexString(randomKey);
Вообще 0xFF это не 1 байт. Это строка, текстовое представление одного байта. Не путайтесь. 1 байт - это число типа byte от 0 до 255.
Но вообще классы, представляющие алгоритмы шифрования, генерят ключи автоматически. Например:
using Aes aes = Aes.Create(); byte[] key = aes.Key; // это будет новый сгенерированный ключ
Больше примеров тут.
А если прямо отвечать на вопрос, то так:
randomKey[i] = Convert.FromHexString(randomKeyString[2..])[0];
локальные переменные в C# принято называть с маленькой буквы.