Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2012, 22:49   #1
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию Проверка надежности пароля

Облазил все форумы по Excel, VB, cmd и пр. - ну нигде не нашел даже намека на возможность вероятности хотя бы приблизительного, хотя бы отдаленного решения одной, ну уж совсем казалось бы примитивной (?), задачи. Или быть может это настолько примитивная задача, что люди даже и не берутся об нее пачкаться? Все что смог найти - все относиться только к веб-программированию. Но оно мене не надо!
А нужно-то всего ничего - создать одну несчастную форму с одной несчастной обработкой. Чтобы пользователь вписал в предложенную форму придуманный им пароль, нажал кнопку OK, а форма ответила бы ему - отвечает его пароль требованиям безопасности или нет.
Ну разве я многого требую? А?
ru3000 вне форума Ответить с цитированием
Старый 08.10.2012, 22:55   #2
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Ура! Нашел! http://msdn.microsoft.com/ru-ru/library/b05h65z0.aspx
Только теперь осталось воткнуть это все в мой excel.
ru3000 вне форума Ответить с цитированием
Старый 08.10.2012, 23:12   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Просто у каждого свое понимание, что такое хороший пароль
Учтите, что работа с регулярными выражениями в VBA организуется совершенно по-другому. Поcмотрите например
http://www.script-coding.com/WSH/RegExp.html
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.10.2012, 23:28   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от ru3000 Посмотреть сообщение
Ура! Нашел! http://msdn.microsoft.com/ru-ru/library/b05h65z0.aspx
Только теперь осталось воткнуть это все в мой excel.
Вот так
Код:
Function ValidatePassword(ByVal pwd As String, Optional ByVal minLength As Integer = 8, _
                          Optional ByVal numUpper As Integer = 2, _
                          Optional ByVal numLower As Integer = 2, _
                          Optional ByVal numNumbers As Integer = 2, _
                          Optional ByVal numSpecial As Integer = 2) As Boolean
        Set RegExp = CreateObject("VBScript.RegExp")
        ' Replace [A-Z] with \p{Lu}, to allow for Unicode uppercase letters.
        Dim upper, lower, number, special
        RegExp.Pattern = "[A-Z]"
        Set upper = RegExp.Execute(pwd)
        RegExp.Pattern = "[a-z]"
        Set lower = RegExp.Execute(pwd)
        RegExp.Pattern = "[0-9]"
        Set number = RegExp.Execute(pwd)
        RegExp.Pattern = "[^a-zA-Z0-9]"
        Set special = RegExp.Execute(pwd)

        ' Check the length.
        If Len(pwd) < minLength Then ValidatePassword False: Exit Function
        ' Check for minimum number of occurrences.
        If upper.Count < numUpper Then ValidatePassword = False: Exit Function
        If lower.Count < numLower Then ValidatePassword = False: Exit Function
        If number.Count < numNumbers Then ValidatePassword = False: Exit Function
        If special.Count < numSpecial Then ValidatePassword = False: Exit Function

        ' Passed all checks.
        ValidatePassword = True
End Function

Sub TestValidatePassword()
     password = "Password"
    ' Demonstrate that "Password" is not complex.
    MsgBox (password & " is complex: " & ValidatePassword(password))

    password = "Z9f%a>2kQ"
    ' Demonstrate that "Z9f%a>2kQ" is not complex.
    MsgBox (password & " is complex: " & ValidatePassword(password))
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.10.2012, 23:34   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Тут делов-то... на 3-10 строк кода:
1) проверить длину пароля функцией Len()
2) проверить на наличие спецсимволов, цифр, русских и английских букв функцией Like или Instr
3) исходя из результатов проверки, вывести сообщение о допустимости (или недопустимости) пароля
EducatedFool вне форума Ответить с цитированием
Старый 08.10.2012, 23:42   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

doober, забыл
Код:
RegExp.Global = True
Без этого Count никогда не будет >1
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.10.2012, 23:54   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В общем, если выкинуть все лишнее, получится так:
Код:
Function ValidatePassword(ByVal pwd As String, Optional ByVal minLength As Integer = 8, _
                          Optional ByVal numUpper As Integer = 2, _
                          Optional ByVal numLower As Integer = 2, _
                          Optional ByVal numNumbers As Integer = 2, _
                          Optional ByVal numSpecial As Integer = 2) As Boolean
If Len(pwd) < minLength Then Exit Function
With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "[A-Z]"
    If .Execute(pwd).Count < numUpper Then Exit Function
    .Pattern = "[a-z]"
    If .Execute(pwd).Count < numLower Then Exit Function
    .Pattern = "[0-9]"
    If .Execute(pwd).Count < numNumbers Then Exit Function
    .Pattern = "[^a-zA-Z0-9]"
    ValidatePassword = .Execute(pwd).Count >= numSpecial
End With
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 09.10.2012, 02:03   #8
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Казанский, doober, EducatedFool, спасибо большое, что откликнулись.
Но у меня никак не получается привязать код к моей форме. Уже все пальцы на руках перепутались - ну ни как не сообразить мне какую строчку/скобку/закавычку куда поставить, чтобы этот (разкудрить его в коромысло) код начал делать то, чего от него требуется.
Гляньте, пожааалуйста, чо я там натворил.
Вложения
Тип файла: zip Книга1.zip (19.1 Кб, 11 просмотров)
ru3000 вне форума Ответить с цитированием
Старый 09.10.2012, 02:41   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
doober, забыл
Код:
RegExp.Global = True
Без этого Count никогда не будет >1
Это точно,забыл.Мне ближе код-оригинал.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 09.10.2012, 02:57   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от ru3000 Посмотреть сообщение
код начал делать то, чего от него требуется.
Гляньте, пожааалуйста, чо я там натворил.
Странно,он там ничего не делает.
Если правильноный пароль,то и сообщение соответствующее

---------------------------------------------------------------
Вложения
Тип файла: rar WWW.rar (18.4 Кб, 14 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ надежности многоразового пароля Алена056 Помощь студентам 7 19.12.2011 14:54
Проверка пароля Swatch PHP 9 07.12.2011 14:55
проверка пароля tr1x Общие вопросы Delphi 12 27.02.2011 13:05
Проверка пароля Vladya Помощь студентам 1 20.12.2008 21:13
проверка пароля <-=SG=-> Общие вопросы Delphi 4 04.11.2008 19:44