1. 程式人生 > 其它 >【轉載】用你的Excel打造一個隨機密碼生成器

【轉載】用你的Excel打造一個隨機密碼生成器

密碼管理的重要性不言而喻,火箭君也曾多次撰文提醒大家要主要自己的密碼安全性。那麼本期,就和火箭君一起在excel中打造隨機密碼生成器,讓你的密碼安全由你自己來掌握。

首先,我們要解決的問題是,如何建立密碼中的各個字元。

>>>建立隨機數字

隨機數字的建立可能小夥伴們都比較熟悉,通過使用RAND()或者RANDBETWEEN()這兩個函式,可以創建出從0~9這10個數字。但是要注意的是,RANDBETWEEN函式引數中的最大值也包含在隨機結果中,因此最大值引數應該設定為9,而不是10。

當然如果你想生成只含數字的密碼,比如生成一個5位數字,你也可以這樣操作:

>>>

建立隨機字母

相較於大家熟知的隨機數字,隨機字母其實不太常用。建立隨機字母,我們需要用到CHAR()函式,通過CHAR()函式將隨機產生的10進位制數字轉換為ANSI碼中對應的字元。

規則如下:

因此,大寫字母對應的是65~90,而小寫字母對應的則是97~122。

由此可見,如果我們要生成一個5位密碼,且第一位為小寫字母,第二位為數字,第三位為大寫字母,第四、第五位又是數字,則可以如此操作:

>>>建立包含隨機字母、數字與字元的密碼

如果你仔細觀察ANSI碼,它其實還包含了對於一些特殊字元的定義,比如說感嘆號為33,冒號為58。利用這個規則,我們還可以編寫一個同時包含字母、數字與字元的隨機值。

>>>建立隨機長度且包含隨機字母、數字與字元的密碼

如果你還想進一步挑戰難度,你也可以試著建立一個隨機長度且包含隨機字母、數字與字元的密碼。當然,這靠函式有點強人所難,VBA則恰到好處:

Public Function RandomizeF(Num1As Integer, Num2As Integer)

Dim RandAs String

Application.Volatile

getLen = Int((Num2 + 1 - Num1) * Rnd + Num1)

Do

i = i + 1

Randomize

Rand = Rand & Chr(Int((85) * Rnd + 38))

Loop Until i = getLen

RandomizeF = Rand

End Function

複製上述程式碼,並在VBA中新建一個模組,將其複製,這樣我們就可以在工作表中呼叫這個RandomizeF函數了。