Как конвертировать из 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.
Ответы (2 шт):
Да судя по задаче у автора жгучее желание перевода строки в byte array, Но думаю что тут возможно дело в другом. Почему то у автора генерация каждого байта не много отходит от стандартов понимания этих данных.
- Если есть необходимость сгенерировать псевдослучайной массив байтов, то Random.NextBytes
- Если нужно этот массив байтов увидеть т в Hex то ссылка тут
В любом случае генерировать число, потом переводить сгенерированое число в строку а затем пытаться перевести строку в byte. Показывает лишь что автор не много запутался в задаче и потерял мысль которая была изначально. Но конечно это возможно лишь мои предложения и я ошибаюсь. Но если оно так прошу не судить строго. Пытаюсь лишь помочь автору.
Генерировать ключи шифрования с помощью 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# принято называть с маленькой буквы.