![]() |
Генератор случайных чисел на C++, C#
Подскажите, как можно генерировать случайные символы (числа) на C++, C#.
Причём набор символов задан изначально в программе, т.е. генерация происходит из определенного набора чисел, которые заданы изначально. Всё это работает и сохраняется в базе MSSQL, в таблице с такими например полями: nomer(ID), login, pwd, comment Т.е. это просто программа генерации и хранения паролей. Пользователь набирает login и comment и нажимает на "сгенерить". В поле pwd появляется сгенерированный случайный набор символов (пароль). И чтобы это всё хранилось в базе MSSQL, а не в текстовом файле. |
Генерация 10-и символьного пароля из заранее определенного массива символов:
Код:
private void button1_Click(object sender, EventArgs e) |
Я не хочу обижать, но люди прослушавшие курс криптографии должны знать, что такой способ плох. А увидев реализацию скажут, что автор не знает, что такое пара случайное число и крипто-стойкий пароль.
С другой стороны, когда секреты не очень важны, то такой способ пойдет, предварительно расширив его на: 1. Цифры 2. Буквы различных регистров. 3. Знаки препинания. А если интересно -- то генерацию случайных чисел можно найти в "Исскустве Программирования" Дональда Кнута, а почему этого нельзя -- делать для генерации паролей в красной "книге криптографии=)" Брюса Шнайера. |
PinGUIWin, обиды тут не причем, я совершенно согласен с отмеченными аспектами, но судя по заданному вопросу, тут и не требовалось большего, чем элементарный шаблон, что я привел.
|
Всё отлично сработало. Спасибо. Расширил массив до цифр и букв разного регистра. А какая вероятность, что сгенерированные пароли совпадут? И можно ли ещё каким-нибудь простым способом увеличить "криптостойкость" ?
Или например если преобразовывать строку ГГГГ/мм/дд случайным образом в строку символов - это может сойти за более "криптостойкий" пароль и за более большую вероятность ""? И такой вопрос: как можно сделать, чтобы можно было исключать необходимые символы из набора символов. Например 0 О и т.д. Но не просто удалив их из кода, а в новом textBox'e вводить такие символы и они, соответственно не генерятся. |
Тогда уж лучше не дату, в время в миллисекундах пропустить через хеш (читай, преобразовать в строку:p) и сконкатенировать/перемешать с паролем.
А про втрое -- честно не знаю, как это можно реализовать на C#. Но на C++ я бы перехватывал сообщения textBox и проверял каждый символ. PS. А датчик случайных чисел инициализируется?;) |
Цитата:
http://www.sql.ru/forum/actualthread.aspx?tid=411039 Цитата:
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.