台灣最大程式設計社群網站
線上人數
660
 
會員總數:244989
討論主題:188956
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 亂數密碼產生範例(By Poison Chang )
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
亂數密碼產生範例(By Poison Chang )
價值 : 0 QP  點閱數:3141 回應數:0

樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
以下程式歡迎個人或非營利機關以及學術單位免費使用,若牽扯商業行為,請來信告知取得許可。


'使亂數產生時不照順序

Randomize


'亂數產生十二碼位數

'方法:分六次產生,每次產生一個不同的亂數,並加上當時秒數。

Code = Right("00" & Second(Now) + Int((39 * Rnd)+1),2)

Code = Code & Right("00" & Second(Now) + Int((39 * Rnd)+1) ,2)

Code = Code & Right("00" & Second(Now) + Int((39 * Rnd)+1) ,2)

Code = Code & Right("00" & Second(Now) + Int((39 * Rnd)+1) ,2)

Code = Code & Right("00" & Second(Now) + Int((39 * Rnd)+1) ,2)

Code = Code & Right("00" & Second(Now) + Int((39 * Rnd)+1) ,2)


'將十二位數拆成十二組,兩位數一組。

For I = 1 To 12

Session("Temp_" & I) = Clng(Asc(Mid(Code,I,1)))

Next



'設定十二個變數,內容為上面拆出來的變數照順序合併後,再乘上一組一到一千的亂數,再取三十六的於數。

Session("Code_1") = ((Session("Temp_1") & Session("Temp_2")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_2") = ((Session("Temp_2") & Session("Temp_3")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_3") = ((Session("Temp_3") & Session("Temp_4")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_4") = ((Session("Temp_4") & Session("Temp_5")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_5") = ((Session("Temp_5") & Session("Temp_6")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_6") = ((Session("Temp_6") & Session("Temp_7")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_7") = ((Session("Temp_7") & Session("Temp_8")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_8") = ((Session("Temp_8") & Session("Temp_9")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_9") = ((Session("Temp_9") & Session("Temp_10")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_10") = ((Session("Temp_10") & Session("Temp_11")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_11") = ((Session("Temp_11") & Session("Temp_12")) * Int((1000 * Rnd)+1)) Mod 36

Session("Code_12") = ((Session("Temp_12") & Session("Temp_1")) * Int((1000 * Rnd)+1)) Mod 36



'將上列十二組變數合併,並用 Chr 函式轉為 0-9 A-Z 英數混合的十二碼字串。

For I = 1 To 12

If Session("Code_" & I) > 9 Then

Session("Code_" & I) = Chr(Session("Code_" & I) + 55)

End If

Password = Password & Session("Code_" & I)

Next


以上程式產生出來的 Password 可以說是無從猜測。

為十二碼大寫英文字以及數字混合,破解機率頗低,可適用於一般會員系統之亂數寄發密碼。


By Poison Chang - 礦物質男孩 poison@ms50.url.com.tw


本篇文章發表於2000-09-28 00:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.