Проверка на сложността на паролата

Здравейте! Имаме нужда от алгоритъм за проверка на сложността на парола в Delphi, има ли вече написани или статии, справочно ръководство за това как да проверите парола за сложност. Намерих кода в MSDN, но само във VB.

Защо да се притеснявате? Погледнете прозореца с настройките за сложност на паролата: 1. минимална дължина. 2. брой небуквено-цифрови знаци 3. изискване за историческа неповторяемост на паролата

> Прасчо Мечо Пух (12.10.09 00:36) [1]

+ проверка на речника с груба сила.

> Денис123 (10/11/09 22:09) > > Здравейте! Имаме нужда от алгоритъм за проверка на сложността на паролатаЗащо е необходим този алгоритъм? Учебна задача?

+ сравнение с вход / потребителско име, търсене на събития

> Имаме нужда от алгоритъм. намери кода, но > само на VBи алгоритъмът на какво е необходимо? :)

Регулярни изрази + проверка на речника с груба сила.

И какво, библиотеката с регулярни изрази влиза в стандартната доставка на Delphi?

GDI+ (12.10.09 10:54) [7] Все още не, но никой не забранява включването на TRegExpr като източници.

GDI+ (12.10.09 10:54) [7] Можете да го намерите в Google

В допълнение към проверката с речници, можете да свържете ентропия. Парола с ентропия от 4 или повече е добра :)

функция CheckEntropy(Buff: PByte; dwSize: DWORD): Double;

функция Log2(const X: Разширен): Разширен; asm FLD1 FLD X FYL2X FWAIT край;

var DataBuff: масив [0..255] от цяло число; FrequencyBuff: масив [0..255] от Double; I: Цяло число; начало Резултат := 0; ако dwSize = 0 тогава Изход; ZeroMemory(@DataBuff[0], 256 * SizeOf(цяло число)); ZeroMemory(@FrequencyBuff[0], 256 * SizeOf(Double)); // Вижте колко пъти се среща всеки знак за I:= 0 до dwSize - 1 do begin Inc(DataBuff[Buff^]); Inc (баф); край; // Изчислете честотата на появяване на всеки символ за I := 0 до 255 do FrequencyBuff[I] := DataBuff[I] / dwSize; // Изчисляване на ентропия за I := 0 до 255 do if DataBuff[I] <> 0 след това Резултат := Резултат + (-FrequencyBuff[I] * Log2(FrequencyBuff[I])) край;

процедура TfrmEntropy.Edit1Change(Sender: TObject); begin Label1.Caption := FloatToStr(CheckEntropy( PByte(PChar(Edit1.Text)), Length(Edit1.Text))); end;

всички тези изисквания неизбежно имат един страничен ефект. под формата на стикер на монитора. да не забравяме много добра парола, която е преминала проверката на алгоритъма.

Да, в колежа ни помолиха да напишем функция за проверка на сложността на паролата в Delphi. Не го намерих в Google, освен това на някои сайтове дори qwerty паролите се считат за сложни. Речник на "груби сили", сега ще погледна. Благодаря ти.

function IsStrongPassword(const APassword : string) : boolean; begin Result := (APassword <> "bog") и (APassword <> "love") и (APassword <> "sex") end;

+ проверка на речника с груба сила.

а речникът на грубата сила е азбуката.

> Необходим еалгоритъмза проверка на сложността на паролата

Забавен. Ако паролата се състои от най-малко 8 символа с различен регистър, както и цифри, тя е сложна. Ако паролата се състои от една цифра, тя се разбива при максимум 10 опита. Научих комбинаторика и тервер.

Паролата трябва да е лесна за запомняне, безсмислена или неприлична и дълга.

Всъщност аз също донесох този алгоритъм.

> Забавен. > Ако паролата е най-малко 8 знака със смесен регистър, > както и числата, това е сложно. > Ако паролатасе състои от една цифра, прекъсва най-много > в 10 опита. > Преподаваше комбинаторика и тервер. >

Оказва се, че паролата Qwerty123 се счита за сложна?

Гост (12.10.09 20:23) [22] Счита се от груби форсъри в базата данни.