首页 > 代码库 > LotusScript生成随机密码(数字、字母、特殊字符组合)

LotusScript生成随机密码(数字、字母、特殊字符组合)




【背景】

        近期OA系统要进行安全检查,由于未做密码策略,很多用户仍然使用的是初始化密码,需要在后台批量修改为强密码(数字、小写字母、大写字母、特殊字符的组合),在网上参考了其他平台强密码的生成思路,特编写了Lotusscript下生成强密码的脚本。

【参考代码】

%REM
	Library createRandomPasswd
	Created 2014-9-22 by admin/cht
	Description: Comments for Library
%END REM
Option Public
Option Declare

Function fnGetMax(iMin As Integer,iMax As Integer) As Integer
	On Error GoTo errhandle
	If iMin>=iMax Then
		fnGetMax = iMin
	Else
		fnGetMax = iMax
	End If
	Exit Function
errhandle:
	MsgBox "fnGetMax error:" & Error() & ",erl:" & CStr(Erl())
	Exit Function
End Function
%REM
	Function fnRandom
	Description: Comments for Function
%END REM
Function fnRandom(iMin As Integer,iMax As Integer) As Integer
	On Error GoTo errhandle
	
	fnRandom = CInt(fnGetMax(iMin,Rnd * iMax))
	Exit Function
errhandle:
	MsgBox "fnRandom error:" & Error() & ",erl:" & CStr(Erl())
	Exit Function
End Function
%REM
	sNoPasswd 	生成随机密码出错时的初始化密码
	iLen	  	生成随机密码的长度,至少4位
%END REM
Function fnRndPasswd(sNoPasswd As String,iLen As Integer) As String
	On Error GoTo errhandle
	'初始化密码
	'fnRndPasswd = "1qaz!QAZ"
	fnRndPasswd = sNoPasswd
	
	Dim str1(3) As String
	str1(0) = "abcdefghijklmnopqrstuvwxyz"
	str1(1) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	str1(2) = "1234567890"
	str1(3) = "~!@#$%^*_+-';:,."
	Dim i As Integer	
	Dim iIndex As Integer
	Dim passwd As String
	passwd = ""
	
	If iLen>4 Then
		For i=1 To iLen-4
			iIndex = fnRandom(0,3)
			passwd = passwd & Mid(str1(iIndex),fnRandom(1,Len(str1(iIndex))),1)
		Next
	End If
	
	'为了保障密码必须包含数字、小写字母、大写字母、特殊字符
	'后四位直接为小写字母、大写字母、数字、特殊字符
	passwd = passwd & Mid(str1(0),fnRandom(1,Len(str1(0))),1)
	passwd = passwd & Mid(str1(1),fnRandom(1,Len(str1(1))),1)
	passwd = passwd & Mid(str1(2),fnRandom(1,Len(str1(2))),1)
	passwd = passwd & Mid(str1(3),fnRandom(1,Len(str1(3))),1)
	
	fnRndPasswd = passwd
	
	Exit Function
errhandle:
	MsgBox "fnRndPasswd error:" & Error() & ",erl:" & CStr(Erl())
	Exit Function
End Function

思路并不复杂,LotusScript的随机函数是Rnd(),为了保证密码必须是数字、小写字母、大写字母、特殊字符组合,这段代码里面密码长度至少是4位,并且后面4位分别是:小写字母、大写字母、数字、特殊字符,其实这一块可以随机生成。



LotusScript生成随机密码(数字、字母、特殊字符组合)