Inno Setup 中的数据库密码复杂性验证
Database password complexity verification in Inno Setup
在我的设置中,我需要使用从 InputQueryPage
传递的 SA 密码安装 SQL 服务器。
我需要根据 Windows 密码复杂性限制密码输入。密码长度至少为 9 个字符,并且必须至少包含一个符号、一个大写字母、一个小写字母和一位数字。怎么做到的?
我有这个代码:
Page0 :=
CreateInputQueryPage(
pSelectTasks, 'SQL Server installation', '',
'Specify SQL Server parameters , press Next to continue.');
Page0.Add('SQL Instance:', False);
Page0.Add('Sa Password:', True);
Page0.Values[0] := ('xxx');
Page0.Values[1] := ('xxxxxxx');
用这段代码解决了:
function passwordcomplexity(Pass : String) : Boolean;
var
i : integer;
Findchar : Boolean;
begin
Result := false;
Findchar:= false;
begin
if Length(Pass) < 9 then
begin
Result := False;
Exit;
end;
for i:=1 to length(Pass) do
begin
case Pass[i] of
'!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '\', '*', '#': // caratteri speciali
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'A'..'Z': // maiuscole
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'a'..'z': // minuscole
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'0'..'9': // numeri
begin
Findchar := true;
break;
end;
end;
end;
end;
end;
end;
end;
Result := Findchar ;
end;
查看此内容以了解如何将测试集成到 Inno Setup 中:
为了实际验证密码的复杂性,我将您的代码简化如下:
function PasswordComplexity(Pass: string): Boolean;
var
I: Integer;
AnySymbol, AnyUpper, AnyLower, AnyDigit: Boolean;
begin
if Length(Pass) < 9 then
begin
Result := False;
end
else
begin
AnySymbol := False;
AnyUpper := False;
AnyLower := False;
AnyDigit := False;
for I := 1 to Length(Pass) do
begin
case Pass[I] of
'!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '\', '*', '#':
AnySymbol := True;
'A'..'Z':
AnyUpper := True;
'a'..'z':
AnyLower := True;
'0'..'9':
AnyDigit := True;
end;
end;
Result := AnySymbol and AnyUpper and AnyLower and AnyDigit;
end;
end;
在我的设置中,我需要使用从 InputQueryPage
传递的 SA 密码安装 SQL 服务器。
我需要根据 Windows 密码复杂性限制密码输入。密码长度至少为 9 个字符,并且必须至少包含一个符号、一个大写字母、一个小写字母和一位数字。怎么做到的?
我有这个代码:
Page0 :=
CreateInputQueryPage(
pSelectTasks, 'SQL Server installation', '',
'Specify SQL Server parameters , press Next to continue.');
Page0.Add('SQL Instance:', False);
Page0.Add('Sa Password:', True);
Page0.Values[0] := ('xxx');
Page0.Values[1] := ('xxxxxxx');
用这段代码解决了:
function passwordcomplexity(Pass : String) : Boolean;
var
i : integer;
Findchar : Boolean;
begin
Result := false;
Findchar:= false;
begin
if Length(Pass) < 9 then
begin
Result := False;
Exit;
end;
for i:=1 to length(Pass) do
begin
case Pass[i] of
'!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '\', '*', '#': // caratteri speciali
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'A'..'Z': // maiuscole
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'a'..'z': // minuscole
begin
Findchar := true;
break;
end;
end;
end;
if Findchar = true then
begin
Findchar:= false
for i:=1 to length(Pass) do
begin
case Pass[i] of
'0'..'9': // numeri
begin
Findchar := true;
break;
end;
end;
end;
end;
end;
end;
end;
Result := Findchar ;
end;
查看此内容以了解如何将测试集成到 Inno Setup 中:
为了实际验证密码的复杂性,我将您的代码简化如下:
function PasswordComplexity(Pass: string): Boolean;
var
I: Integer;
AnySymbol, AnyUpper, AnyLower, AnyDigit: Boolean;
begin
if Length(Pass) < 9 then
begin
Result := False;
end
else
begin
AnySymbol := False;
AnyUpper := False;
AnyLower := False;
AnyDigit := False;
for I := 1 to Length(Pass) do
begin
case Pass[I] of
'!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '\', '*', '#':
AnySymbol := True;
'A'..'Z':
AnyUpper := True;
'a'..'z':
AnyLower := True;
'0'..'9':
AnyDigit := True;
end;
end;
Result := AnySymbol and AnyUpper and AnyLower and AnyDigit;
end;
end;