IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Генератор случайных чисел на C++, C# (http://www.imho.ws/showthread.php?t=117202)

Crimson 26.03.2007 18:50

Генератор случайных чисел на C++, C#
 
Подскажите, как можно генерировать случайные символы (числа) на C++, C#.

Причём набор символов задан изначально в программе, т.е. генерация происходит из определенного набора чисел, которые заданы изначально. Всё это работает и сохраняется в базе MSSQL, в таблице с такими например полями:

nomer(ID), login, pwd, comment

Т.е. это просто программа генерации и хранения паролей. Пользователь набирает login и comment и нажимает на "сгенерить". В поле pwd появляется сгенерированный случайный набор символов (пароль). И чтобы это всё хранилось в базе MSSQL, а не в текстовом файле.

ЕЖ 26.03.2007 22:57

Генерация 10-и символьного пароля из заранее определенного массива символов:

Код:

private void button1_Click(object sender, EventArgs e)
{
        Random rnd = new Random();
        Char[] pwdChars = new Char[26] {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        textBox1.Text = String.Empty;
        for (int i = 0; i < 10; i++)
                textBox1.Text += pwdChars[rnd.Next(0, 25)];
}


PinGUIWin 26.03.2007 23:51

Я не хочу обижать, но люди прослушавшие курс криптографии должны знать, что такой способ плох. А увидев реализацию скажут, что автор не знает, что такое пара случайное число и крипто-стойкий пароль.
С другой стороны, когда секреты не очень важны, то такой способ пойдет, предварительно расширив его на:
1. Цифры
2. Буквы различных регистров.
3. Знаки препинания.

А если интересно -- то генерацию случайных чисел можно найти в "Исскустве Программирования" Дональда Кнута, а почему этого нельзя -- делать для генерации паролей в красной "книге криптографии=)" Брюса Шнайера.

ЕЖ 27.03.2007 01:00

PinGUIWin, обиды тут не причем, я совершенно согласен с отмеченными аспектами, но судя по заданному вопросу, тут и не требовалось большего, чем элементарный шаблон, что я привел.

Crimson 29.03.2007 13:16

Всё отлично сработало. Спасибо. Расширил массив до цифр и букв разного регистра. А какая вероятность, что сгенерированные пароли совпадут? И можно ли ещё каким-нибудь простым способом увеличить "криптостойкость" ?

Или например если преобразовывать строку ГГГГ/мм/дд случайным образом в строку символов - это может сойти за более "криптостойкий" пароль и за более большую вероятность ""?

И такой вопрос: как можно сделать, чтобы можно было исключать необходимые символы из набора символов. Например 0 О и т.д. Но не просто удалив их из кода, а в новом textBox'e вводить такие символы и они, соответственно не генерятся.

PinGUIWin 29.03.2007 22:59

Тогда уж лучше не дату, в время в миллисекундах пропустить через хеш (читай, преобразовать в строку:p) и сконкатенировать/перемешать с паролем.
А про втрое -- честно не знаю, как это можно реализовать на C#. Но на C++ я бы перехватывал сообщения textBox и проверял каждый символ.

PS. А датчик случайных чисел инициализируется?;)

Hubbitus 10.05.2007 21:00

Цитата:

Сообщение от Crimson (Сообщение 1381668)
В поле pwd появляется сгенерированный случайный набор символов (пароль). И чтобы это всё хранилось в базе MSSQL, а не в текстовом файле.

Может тогда и генерить на MSSQL?

http://www.sql.ru/forum/actualthread.aspx?tid=411039
Цитата:

Сообщение от PinGUIWin (Сообщение 1381864)
Я не хочу обижать, но люди прослушавшие курс криптографии должны знать, что такой способ плох. А увидев реализацию скажут, что автор не знает, что такое пара случайное число и крипто-стойкий пароль.

Ну можно и используя Windows CryptoAPI расширенные процедурки применить:
http://www.sql.ru/forum/actualthread...id=1&tid=19780


Часовой пояс GMT +4, время: 03:26.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.