Загрузка...

Как сделать 128 случайных бит?

Тема в разделе C# создана пользователем SaX 9 янв 2023. (поднята 9 янв 2023) 276 просмотров

Загрузка...
  1. SaX
    SaX Автор темы 9 янв 2023 lolz.live/threads/7552512 - лучший крипто разработчик
    CSHARP
    Random rnd = new Random();
    long random_bits = rnd.Next(1000000000000000, 9999999999999999);
    string binary = Convert.ToString(random_bits, 2);
    Console.WriteLine(binary);
    Использовал такой код но для конверта нужен int а у меня из за длины вышло long ? Поможете?
     
    9 янв 2023 Изменено
  2. SaX
    SaX Автор темы 9 янв 2023 lolz.live/threads/7552512 - лучший крипто разработчик
    We start off by generating 128 bits of entropy.
    В статье есть такая строчка, мне надо это реализовать
     
  3. Дефлоратор
    Дефлоратор 9 янв 2023 Заблокирован(а) 8 18 мар 2020
    Вы можете использовать метод Convert.ToString(random_bits, 2) так как он работает с типом long. Чтобы обрезать строку до 128 символов, вы можете использовать следующий код:

    CSHARP
    string binary = Convert.ToString(random_bits, 2).PadLeft(128, '0').Substring(0, 128);
    Этот код конвертирует число random_bits в двоичное представление, добавляет нули слева, чтобы достичь длины 128 символов, и обрезает строку до 128 символов.

    Однако стоит отметить, что этот код не гарантирует, что полученное число будет строго 128 случайных бит. Чтобы получить строго 128 случайных бит, вы можете использовать класс System.Security.Cryptography.RandomNumberGenerator, который предоставляет более надежный способ генерации случайных чисел. Ниже приведен пример кода, который использует RandomNumberGenerator для создания 128 случайных бит:

    CSHARP
    using System.Security.Cryptography;

    ...

    RandomNumberGenerator rng = RandomNumberGenerator.Create();
    byte[] randomBits = new byte[16]; // 16 байт =
     
  4. sodapng
    sodapng 9 янв 2023 1 10 апр 2022
    string binary = Convert.ToString(random_bits, 2).Substring(0, 128);
     
    9 янв 2023 Изменено
    1. Дефлоратор
      sodapng, Ах сука, я тоже через него ответ дал)
  5. Кот
    Кот 9 янв 2023 тихонечко двигаемся
    В вашем коде вы используете метод Next класса Random, который возвращает случайное целое число в диапазоне от 1000000000000000 до 9999999999999999. Поскольку этот диапазон выходит за границы максимального значения int, то при попытке конвертировать random_bits в строку бинарного формата с помощью метода Convert.ToString вы получаете ошибку.

    Чтобы решить эту проблему, вы можете сгенерировать 128 случайных бит, используя другой метод NextBytes класса Random, который заполняет указанный массив байтов случайными значениями:


    Random rnd = new Random();
    byte[] random_bytes = new byte[16]; // создаем массив из 16 байт
    rnd.NextBytes(random_bytes); // заполняем массив случайными значениями

    string binary = "";
    foreach (byte b in random_bytes)
    {
    binary += Convert.ToString(b, 2).PadLeft(8, '0'); // конвертируем каждый байт в строку бинарного формата и добавляем к результирующей строке
    }
    Console.WriteLine(binary);
     
    1. vtlstolyarov
      Кот,
      CSHARP
      Random rnd = new Random();
      byte[] random_bytes = new byte[16]; // создаем массив из 16 байт
      rnd.NextBytes(random_bytes); // заполняем массив случайными значениями

      string binary = string.Concat(random_bytes.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));
      Console.WriteLine(binary);
Top