Главная arrow Статьи arrow Visual Basic arrow Генератор псевдослучайных паролей на VB  
20.11.2008 г.
Главное меню
Главная
Новости
Библиотека кодов
Исходники
Статьи
ActiveX
Софт
Бета-тестирование
Справочники
Медиа
Форум
Тесты
Блоги
Юмор
Ссылки
Для правообладателей
Личные сообщения
Предложить материал
Обмен баннерами
Контакты
Реклама
Админцентр
Рекомендуем
Школа латиноамериканских танцев SALSEROS
Softrate

Здесь может быть Ваша реклама!
Отблагодарить
Вам понравился этот сайт?
Вы хотите отблагодарить нас?
Вы можете это сделать, для этого поставьте на этот сайт ссылку со своего сайта или переведите деньги в фонд сайта на кошелек Z106793497010.
Рассылка
Регистрация
Вы все еще не зарегистрированы на форуме?
Познакомьтесь с программистами, спросите совета, найдите помощь в решении задачи или узнайте мнение программистов в опросе, зарегистрировавшись на форуме.
Нажмите сюда, чтобы зарегистрироваться прямо сейчас!
Программирование на Visual Basic 6/.NET/VBA/VBScript: исходники, коды, статьи
Генератор псевдослучайных паролей на VB
Для создания простейшего генератора паролей будем использовать:
1. Генератор псевдослучайных чисел;
2. Функцию Chr.

И так, рассмотрим алгоритм:

1. Инициализируем генератор случайных чисел:
Randomize
2. Используем цикл For для генерации каждого символа. Число символов в пароле - от 8 до 12:
For i = 1 To (Rnd * 4) + 8
3. Генерируем псевдослучайное число - ASCII код символа, преобразовываем его в символ функцией Chr и дописываем к паролю:
10 x = (Rnd * (120 - 48)) + 48
If (x > 57) And (x < 65) Then GoTo 10
If (x > 90) And (x < 97) Then GoTo 10
Pass = Pass & Chr(x)
4. Ну, и заканчиваем цикл:
Next

В результате, дописав все объявления переменных и т.п., получаем такой код для генерации 8-12 значного пароля:
Public Function GeneratePassword() As String
Dim Pass As String, i As Byte, x As Byte
Randomize
For i = 1 To (Rnd * 4) + 8
10 x = (Rnd * (120 - 48)) + 48
'Если это не алфавитно-цифровой символ - пробуем еще раз
If (x > 57) And (x < 65) Then GoTo 10
If (x > 90) And (x < 97) Then GoTo 10
Pass = Pass & Chr(x)
Next
GeneratePassword = Pass
End Function

Теперь поговорим, как можно сделать генерацию с использованием коллекции символов. Для этого объявляем массив arr и присваем каждому его элементу один символ. Удалим строку 10 и две следующии, сделаем необходимые извенения:
Pass = Pass & arr(Rnd * UBound(arr))
Функция UBound возвращает номер последнего элемента массива.
Теперь, в качестве символа, случайно выбирается один из элементов массива.

Public Function GeneratePassword() As String
Dim Pass As String, arr() As String, i As Byte
arr = Split("0,1,2,3,4,5,6,7,8,9,a,b,c,d", ",")
Randomize
For i = 1 To (Rnd * 4) + 8
Pass = Pass & arr(Rnd * UBound(arr))
Next
GeneratePassword = Pass
End Function

Эта статья научила Вас делать программы, генерирующие сложные пароли. Данный алгоритм может применяться во многих приложениях, где пользователю необходимо создать свой пароль. Жду Ваших комментариев.

Копирование, цитирование, хранение, перепечатка и/или публикация данной статьи разрешены только при обязательном указании прямой ссылки на сайт http://www.vbcoding.org.ua , E-Mail автора и данного предупреждения. Статья может быть исправлена и/или дополнена автором без уведомления читателей.


Автор: Влад Таранов, vbpro@ukr.net.
Последнее обновление ( 12.10.2008 г. )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Жирный Курсив Подчеркнутый Ссылка Список Цитата

Защитный код
Обновить

След. »
Добавить в закладки
 
 
Читайте еще
Лучшие файлы
Значок файла Руководство по Visual Basic 6 (47399)
(Справочники)

Значок файла VBProject (38528)
(Справочники)

Значок файла Создание приложений ОС Windows (32297)
(Справочники)

Значок файла Visual Basic с нуля (25247)
(Справочники)

Значок файла Азбука Visual Basic (22161)
(Справочники)

Значок файла Алгоритмы Visual Basic (22116)
(Справочники)

Значок файла MegaFlash VBHELP (20022)
(Справочники)

Новые файлы
Опросы
Как Вы узнали про этот сайт?

Кто на сайте?
Сейчас на сайте находятся:
1 гость
IP адрес
Ваш IP адрес: 38.103.63.55 (38.103.63.55)