3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
1

Шифрование. Сгенерировать случайным образом последовательность шестнадцатеричных чисел

31.10.2014, 13:27. Показов 2683. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажем имеется набор шестнадцатеричных чисел ("1234567890ABCDEF"). Как сгенерировать случайную последовательность этих чисел длиною в 64 символа? Должно получиться примерно что-то такое: "01329A4CD91507BF9E24CE6940AD03ACB190764AE5F9C16790CB1A90E6F90734"

Эту последовательность хочу использовать в качестве ключа для шифрования файлов. (Сначала эту последовательность преобразую в двоичный код а потом пишу ключ в файл). Также имеется возможность вручную вводить ключ. С точки зрения безопасности, целесообразно ли использовать случайно сгенерированную последовательность в отличие от вводимой вручную? Или нет разницы?
0
31.10.2014, 13:27
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2014, 13:27
Ответы с готовыми решениями:

Случайным образом сгенерировать массив из 20 чисел (в заданном диапазоне)
Создать программу на С++, в которой случайным образом генерируется массив из 20 чисел (в диапазоне от -50.0 до 40.0) типа float....

Сгенерировать случайным образом массив целых чисел и разместить его в динамической памяти
Сгенерировать случайным образом массив целых чисел. Разместить массив в динамической памяти. Найти сумму положительных элементов массива.

Сгенерировать 1 и -1 случайным образом
Понадобилось сгенерировать не число, а знак. Поэтому решил создать алгоритм, который генерирует случайным образом только число 1 или -1. ...

4
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
31.10.2014, 13:42 2
DEMON_RUS,
C#
1
2
3
4
5
6
7
8
9
            string str = "1234567890ABCDEF";
            var sb= new StringBuilder();
            var ran = new Random();
            for (int i = 0; i < 64; i++)
            {
                sb.Append(str[ran.Next(str.Length)]);
            }
            Console.WriteLine(sb);
            Console.ReadLine();
Добавлено через 1 минуту
тут есть вероятность что не каждый символ из исходной последовательности , окажется в итоговой (длиной - 64)
0
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
31.10.2014, 14:00  [ТС] 3
Попытался своё написать, оптимальностью не блещу
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
private void button4_Click(object sender, EventArgs e)
        {
            int count = 64;
            Random rand = new Random((int)DateTime.Now.Ticks);
 
            for (int i = 0; i < count; i++)
            {
                var tempKey = Convert.ToString(rand.Next(16));
                Convert.ToString(tempKey);
                if (tempKey == "10")
                {
                    strKey += 'A';
                }
                else if (tempKey == "11")
                {
                    strKey += 'B';
                }
                else if (tempKey == "12")
                {
                    strKey += 'C';
                }
                else if (tempKey == "13")
                {
                    strKey += 'D';
                }
 
                else if (tempKey == "14")
                {
                    strKey += 'E';
                }
                else if (tempKey == "15")
                {
                    strKey += 'F';
                }
                else strKey += tempKey;
            }
            textBox1.Text = strKey;
        }
Цитата Сообщение от Metall_Version Посмотреть сообщение
тут есть вероятность что не каждый символ из исходной последовательности , окажется в итоговой (длиной - 64)
Спасибо! Вопрос на счет безопасности в силе.
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
31.10.2014, 14:07 4
Цитата Сообщение от DEMON_RUS Посмотреть сообщение
С точки зрения безопасности, целесообразно ли использовать случайно сгенерированную последовательность в отличие от вводимой вручную? Или нет разницы?
смотря что защищается, и в каком масштабе .

Добавлено через 4 минуты
Цитата Сообщение от DEMON_RUS Посмотреть сообщение
опытался своё написать, оптимальностью не блещу
ну если просто сгенерировать случайную последовательность, без исходной то так
C#
1
2
3
4
5
6
            var sb= new StringBuilder();
            var ran = new Random();
            for (int i = 0; i < 64; i++)
                sb.Append( Convert.ToString(ran.Next(16), 16).ToUpper());
 
            Console.WriteLine(sb);
0
2 / 2 / 2
Регистрация: 13.06.2014
Сообщений: 12
31.10.2014, 17:16 5
Метод:
C#
1
2
3
4
5
6
7
8
        public static string GenerateSequence(int length, Random random) {
            string characters = "1234567890ABCDEF";
            StringBuilder result = new StringBuilder(length);
            for (int i = 0; i < length; i++) {
                result.Append(characters[random.Next(characters.Length)]);
            }
            return result.ToString();
        }
Пример использования:
C#
1
2
3
4
5
6
            Random rnd = new Random();
            string[] sequence = new string[10];
            for (int i = 0; i < sequence.Length; i++) {
                sequence[i] = GenerateSequence(64, rnd);
            }
            Console.WriteLine(String.Join(Environment.NewLine, sequence));
Пример результата:
6FBF0192E08AF083FCD0D0EF3970882C03782EF39FFF3BCA5496F43C1CC2AFA7
8A2D4F21CB2DAFD7CC54FCC7F0763E906988AE8639053532F66DA87BEBD09BED
389286CD6F18484B766C0AED3C0F2DC80B3AC20A089B8F87833462590BFABCB8
40D969F6CB422474548EA02970223EECC19D2F1E4D70E3865C795DD0962C8D3D
D761B92630BC38053BC7969F4E6BE586A0C9D7ACA27B2181CD0B2C69E7DC467D
3620B27B21B8FCD385F2AB4E45A79D05A90CFD6B7EA21E920A6E764724677F35
88C73140F5AC23E6B9DE8AD664AB9E57B7A923E98CF3A76F61BE35CC082F7821
F42B8649067BBBAEDB7836570EFA1E3FAE376081C36DE11ED32A10DAFB20609A
381C949547B11890D2CDC8E2298A9DA3AAA71560AD7AED0939C5CADA9FAFBEB7
C966C209B44F2535EF811661D1E107DB21E685B2E4007E05C71C7B67369C39F6
0
31.10.2014, 17:16
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2014, 17:16
Помогаю со студенческими работами здесь

Сгенерировать случайным образом замкнутую кривую
Подскажите какие есть варианты генераци замкнутых прямых? Пока идея толка одна.. Хочу попробовать массив точек отдалёнвх от центра на...

Сгенерировать случайным образом координаты на плоскости
Сгенерировать случайным образом из диапазона от -10 до 10 координаты точки на плоскости. Вывести сообщение принадлежит ли она оси,...

Последовательность целых n чисел задана случайным образом. Вывести числа, в которых произведение цифр равно числу.
Последовательность целых n чисел задана случайным образом. Вывести числа, в которых произведение цифр равно числу.

Сгенерировать матрицу порядка MxN случайным образом
Необходимо сгенерировать матрицу порядка MxN случайным образом. Я код написал, но у меня прога ругается на строчку matr(i,j) = Int(10 *...

Случайным образом сгенерировать массив символов алфавита
Добрый день! Необходимо поместить случайный символ алфавита в каждый элемент массива char, причем: Нельзя заменить элемент самим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Linux API: Полное руководство
hw_wired 08.02.2025
Linux API – это низкоуровневый программный интерфейс, обеспечивающий взаимодействие пользовательских приложений с ядром операционной системы. Он включает набор системных вызовов, библиотечных функций. . .
Асинхронное программировани­­­­­е и эмуляция async/await в C (СИ)
hw_wired 08.02.2025
Язык программирования C, несмотря на свой возраст, предоставляет неплохие средства для реализации асинхронных операций, позволяя создавать эффективные решения для обработки параллельных задач. В. . .
Как сгенерировать случайное число в указанном диапазоне в JavaScript
bytestream 08.02.2025
В JavaScript генерация случайных чисел основана на детерминированном алгоритме, который создает последовательность псевдослучайных значений. Встроенный метод Math. random() возвращает псевдослучайное. . .
Как получить список всех таблиц в PostgreSQL
bytestream 08.02.2025
PostgreSQL предлагает несколько методов для получения списка таблиц в базе данных. Наиболее распространенный способ - использование системного каталога pg_tables, который содержит информацию обо всех. . .
Java Spring для начинающих
bytestream 08.02.2025
Spring Framework - это универсальное решение для создания корпоративных Java-приложений. Он предоставляет комплексную программную и конфигурационную модель для современных приложений на Java. Spring. . .
Асинхронное программировани­­­­­­е и async/await в Visual Basic
bytestream 08.02.2025
В основе асинхронного программирования в Visual Basic лежит концепция неблокирующего выполнения операций. Когда программа встречает длительную операцию, например, чтение большого файла или запрос к. . .
Async/await и асинхронное программировани­­е в Delphi
bytestream 08.02.2025
Асинхронное программирование является неотъемлемой частью разработки современных приложений, позволяя создавать отзывчивые и эффективные программы. В Delphi реализация асинхронности опирается на. . .
Асинхронное программировани­­­­­е и async/await в C#
bytestream 08.02.2025
Асинхронное программирование - концепция, позволяющая приложениям эффективно выполнять длительные операции без блокировки основного потока выполнения. В контексте современной разработки на C# это. . .
Асинхронное программировани­­­­­е и горутины/каналы в Go
bytestream 08.02.2025
Язык Go изначально разрабатывался с учетом современных многоядерных процессоров и необходимости эффективного параллельного выполнения задач. В отличие от традиционных подходов к асинхронному. . .
Как восстановить stash в Git
hw_wired 08.02.2025
Git stash - это средство для временного сохранения изменений в рабочей директории. В процессе разработки часто возникают ситуации, когда нужно быстро переключиться на другую задачу, но текущие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru