Đặt làm trang chủ     Ghi nhớ (bookmark)     RSS     Đăng ký     Đăng nhập ?>

PN2design ’s Blog

Internet is my life - Thủ thuật IT
Ngày 02 Tháng tám, 2008 bỡi admin

Class tạo chuỗi (key) ngẫu nhiên

.NET Framework hổ trợ gần như hầu hết tất cả những gì LTV cần. Nhưng khi lập trình ứng dụng nếu bạn muốn tạo một chuổi ngẫu nhiên có độ dài theo ý muốn thì chưa có hàm nào hổ trợ. Sau đây là hàm bằng VB.NET giúp bạn trong việc này.

  1. Option Strict On
  2. Imports System.Text
  3. '02082008164025
  4. 'class
  5. '
  6. 'EQUIRES PROPERTIES: KeyLetters, KeyNumbers, MaxChars
  7. '
  8.  
  9. Public Class RandomKeyGenerator
  10.     Dim Key_Letters As String
  11.     Dim Key_Numbers As String
  12.     Dim Key_Chars As Integer
  13.     Dim LettersArray As Char()
  14.     Dim NumbersArray As Char()
  15.  
  16.     '02082008164025
  17.     'property
  18.     '
  19.     'WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
  20.     '
  21.  
  22.     Protected Friend WriteOnly Property KeyLetters() As String
  23.         Set(ByVal Value As String)
  24.             Key_Letters = Value
  25.         End Set
  26.     End Property
  27.  
  28.     '02082008164025
  29.     'property
  30.     '
  31.     'WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
  32.     '
  33.  
  34.     Protected Friend WriteOnly Property KeyNumbers() As String
  35.         Set(ByVal Value As String)
  36.             Key_Numbers = Value
  37.         End Set
  38.     End Property
  39.  
  40.     '02082008164025
  41.     'property
  42.     '
  43.     'WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
  44.     '
  45.  
  46.     Protected Friend WriteOnly Property KeyChars() As Integer
  47.         Set(ByVal Value As Integer)
  48.             Key_Chars = Value
  49.         End Set
  50.     End Property
  51.  
  52.     '02082008072344
  53.     'function
  54.     '
  55.     'GENERATES A RANDOM STRING OF LETTERS AND NUMBERS.
  56.     'LETTERS CAN BE RANDOMLY CAPITAL OR SMALL.
  57.     '
  58.     'RETURNS THE
  59.     '        RANDOMLY GENERATED KEY
  60.  
  61.     Function Generate() As String
  62.         Dim i_key As Integer
  63.         Dim Random1 As Single
  64.         Dim arrIndex As Int16
  65.         Dim sb As New StringBuilder
  66.         Dim RandomLetter As String
  67.  
  68.         'CONVERT LettersArray & NumbersArray TO CHARACTR ARRAYS
  69.  
  70.         LettersArray = Key_Letters.ToCharArray
  71.         NumbersArray = Key_Numbers.ToCharArray
  72.  
  73.         For i_key = 1 To Key_Chars
  74.             'START THE CLOCK
  75.  
  76.             Randomize()
  77.             Random1 = Rnd()
  78.             arrIndex = -1
  79.             'IF THE VALUE IS AN EVEN NUMBER WE GENERATE A LETTER,
  80.             'OTHERWISE WE GENERATE A NUMBER
  81.             'THE NUMBER '111' WAS RANDOMLY CHOSEN. ANY NUMBER
  82.             'WILL DO, WE JUST NEED TO BRING THE VALUE
  83.             'ABOVE '0'
  84.  
  85.             If (CType(Random1 * 111, Integer)) Mod 2 = 0 Then
  86.                 'GENERATE A RANDOM INDEX IN THE LETTERS
  87.                 'CHARACTER ARRAY
  88.  
  89.                 Do While arrIndex < 0
  90.                     arrIndex = _
  91.                      Convert.ToInt16(LettersArray.GetUpperBound(0) _
  92.                      * Random1)
  93.                 Loop
  94.                 RandomLetter = LettersArray(arrIndex)
  95.                 'CREATE ANOTHER RANDOM NUMBER. IF IT IS ODD,
  96.                 'WE CAPITALIZE THE LETTER
  97.  
  98.                 If (CType(arrIndex * Random1 * 99, Integer)) Mod 2 <> 0 Then
  99.                     RandomLetter = LettersArray(arrIndex).ToString
  100.                     RandomLetter = RandomLetter.ToUpper
  101.                 End If
  102.                 sb.Append(RandomLetter)
  103.             Else
  104.                 'GENERATE A RANDOM INDEX IN THE NUMBERS
  105.                 'CHARACTER ARRAY
  106.  
  107.                 Do While arrIndex < 0
  108.                     arrIndex = _
  109.                       Convert.ToInt16(NumbersArray.GetUpperBound(0) _
  110.                       * Random1)
  111.                 Loop
  112.                 sb.Append(NumbersArray(arrIndex))
  113.             End If
  114.         Next
  115.         Return sb.ToString
  116.     End Function
  117.  
  118. End Class

Cách sử dụng:

  1.     Dim KeyGen As New RandomKeyGenerator
  2.     KeyGen.KeyChars = 10
  3.     KeyGen.KeyLetters = "abcdefghijklmnopqrstuvwxyz"
  4.     KeyGen.KeyNumbers = "0123456789"
  5.     MsgBox(KeyGen.Generate())

Một phản hồi cho “Class tạo chuỗi (key) ngẫu nhiên”

  1. :)) :P Save lại khi cần lượm ra sài hehe

Hãy gởi vài lời phản hồi theo mẫu dưới đây

Nhập lại mã xác nhận này