보안이 강화된 요즘 비밀번호 찾기를 하면 임시비밀번호를 발급해야 할때가 있다

그런데 막상 임시 비밀번호를 만들려고 하면 난감할때가 있다

그냥 숫자 8자리를 랜덤하게 만들까 하는 생각도 해보곤했는데

그래도 숫자와 문자를 합쳐서 만드는게 보기에도 좋을것 같아서

함수를 만들어 봤다.

 

'지정길이로 랜덤 숫자 만들기 (최대 15자리)
Function Func_getRndNum(ByVal rLen)
 IF rLen > 15 Then rLen = 15
  
 Dim idx, rndSeed, rndSeed2
 rndSeed = ""
 rndSeed2 = "1"
 
 For idx = 1 To rLen
  rndSeed = rndSeed &"1"
  rndSeed2 = rndSeed2 &"0"
 Next
 
 rndSeed = Int(rndSeed)
 rndSeed2 = Int(rndSeed2)
 
 Randomize
 
 Func_getRndNum = Int(Rnd(rndSeed)*rndSeed2)

End Function

 

'지정길이로 랜덤 문자 만들기

Function Func_getRndChr(ByVal rLen)

 Dim rtnStr
 
 Randomize
 
 For idx = 1 To rLen
  rtnStr = rtnStr & Chr(Int(2*Rnd)*32 + Int((90-65+1)*Rnd + 65))
 Next
 
 Func_getRndChr = rtnStr

End Function

 

 

이렇게 2가지 함수를 만든 다음

 

  strImsi1 = Func_getRndChr(4)
  strImsi2 = Func_getRndNum(5)
  
  imsiPwd = strImsi1 & strImsi2

이런식으로 비밀번호를 만들수 있다.

 

 

 

 

 

좀더 복잡한 비밀번호를 만들수도 있지만 이정도면 충분하지 않을까 싶다

문자 4개와 숫자 5개로 구성된 임시 비밀번호를 생성한 다음 기존 비밀번호 대신 DB에 입력하고 메일로 이 비밀번호를 전송하면 될것 같다.

top


// ##################################################################################
//   비밀번호의 휴효성을 체크한다.
//   호출 방법    :  getCehckPassWord(아이디오브젝트, 비밀번호 오브젝트, 비밀번호 확인오브젝트)
// ##################################################################################
function getCehckPassWord(ObjUserID, ObjUserPassWord, objUserPassWordRe)
{
 
 if(ObjUserPassWord.value != objUserPassWordRe.value)
 {
  alert("입력하신 비밀번호와 비밀번호확인이 일치하지 않습니다");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 
 if(ObjUserPassWord.value.length < 8)
 {
  alert("비밀번호는 문자, 숫자, 특수문자의 조합으로 8~16자리로 입력해주세요.");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 
 if(!ObjUserPassWord.value.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
 {
  alert("비밀번호는 문자, 숫자, 특수문자의 조합으로 8~16자리로 입력해주세요.");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 
 if(ObjUserID.value.indexOf(ObjUserPassWord) > -1)
 {
  alert("비밀번호에 아이디를 사용할 수 없습니다.");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 
 var SamePass_0 = 0; //동일문자 카운트
 var SamePass_1 = 0; //연속성(+) 카운드
 var SamePass_2 = 0; //연속성(-) 카운드
 
 var chr_pass_0;
 var chr_pass_1;
 
 for(var i=0; i < ObjUserPassWord.value.length; i++)
 {
  chr_pass_0 = ObjUserPassWord.value.charAt(i);
  chr_pass_1 = ObjUserPassWord.value.charAt(i+1);
  
  //동일문자 카운트
  if(chr_pass_0 == chr_pass_1)
  {
   SamePass_0 = SamePass_0 + 1
  }
  
  
  //연속성(+) 카운드
  if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1)
  {
   SamePass_1 = SamePass_1 + 1
  }
  
  //연속성(-) 카운드
  if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1)
  {
   SamePass_2 = SamePass_2 + 1
  }
 }
 if(SamePass_0 > 1)
 {
  alert("동일문자를 3번 이상 사용할 수 없습니다.");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 
 if(SamePass_1 > 1 || SamePass_2 > 1 )
 {
  alert("연속된 문자열(123 또는 321, abc, cba 등)을\n 3자 이상 사용 할 수 없습니다.");
  ObjUserPassWord.value = "";
  objUserPassWordRe.value = "";
  ObjUserPassWord.focus();
  return false;
 }
 return true;
}

'개발팁( Javascript )' 카테고리의 다른 글

jsonp에 대한 간단한 사용법  (0) 2014.03.21
SNS연결 스크립트  (0) 2013.07.15
메일 주소 체크 정규 표현식  (0) 2013.07.09
ID의 유효성을 체크한다.  (0) 2013.07.02
오픈윈도우를 띄울때  (0) 2013.07.02
top