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

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

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

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

Эту последовательность хочу использовать в качестве ключа для шифрования файлов. (Сначала эту последовательность преобразую в двоичный код а потом пишу ключ в файл). Также имеется возможность вручную вводить ключ. С точки зрения безопасности, целесообразно ли использовать случайно сгенерированную последовательность в отличие от вводимой вручную? Или нет разницы?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2014, 13:27
Ответы с готовыми решениями:

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

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

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

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

4
2144 / 1281 / 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
2144 / 1281 / 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));
Пример результата:
6FBF0192E08AF083FCD0D0EF3970882C03782EF39FFF3BCA5496F43C1CC2 AFA7
8A2D4F21CB2DAFD7CC54FCC7F0763E906988AE8639053532F66DA87BEBD0 9BED
389286CD6F18484B766C0AED3C0F2DC80B3AC20A089B8F87833462590BFA BCB8
40D969F6CB422474548EA02970223EECC19D2F1E4D70E3865C795DD0962C 8D3D
D761B92630BC38053BC7969F4E6BE586A0C9D7ACA27B2181CD0B2C69E7DC 467D
3620B27B21B8FCD385F2AB4E45A79D05A90CFD6B7EA21E920A6E76472467 7F35
88C73140F5AC23E6B9DE8AD664AB9E57B7A923E98CF3A76F61BE35CC082F 7821
F42B8649067BBBAEDB7836570EFA1E3FAE376081C36DE11ED32A10DAFB20 609A
381C949547B11890D2CDC8E2298A9DA3AAA71560AD7AED0939C5CADA9FAF BEB7
C966C209B44F2535EF811661D1E107DB21E685B2E4007E05C71C7B67369C 39F6
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2014, 17:16

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.