RSS

Xác nhận tính hợp lệ của thẻ tín dụng bằng giải thuật Luhn trong VB.Net

08 May

Bạn muốn xác minh một mã số thẻ tín dụng có hợp lệ hay không ?

Sử dụng giải thuật Luhn (tất cả các mã số thẻ tín dụng đều phải thỏa mãn giải thuật này).
Giải thuật Luhn là cách thức kết hợp các chữ số của một mã số thẻ tín dụng (các chữ số xen kẽ nhau) và kiểm tra tổng cuối cùng có chia hết cho 10 hay không. Nếu thỏa mãn, thẻ tín dụng này là hợp lệ và có thể được sử dụng cho một tài khoản.

Dưới đây là hàm mà bạn có thể sử dụng để thử nghiệm giải thuật Luhn:

Private Function ValidateLuhn(ByVal value As String) As Boolean
Dim CheckSum As Integer = 0
Dim DoubleFlag As Boolean = (value.Length Mod 2 = 0)
Dim Digit As Char
Dim DigitValue As Integer
For Each Digit In value
DigitValue = Integer.Parse(Digit)
If DoubleFlag Then
DigitValue *= 2
If DigitValue > 9 Then
DigitValue -= 9
End If
End If
CheckSum += DigitValue
DoubleFlag = Not DoubleFlag
Next

Return (CheckSum Mod 10 = 0)
End Function


Có thể thử nghiệm hàm này như sau:

If ValidateLuhn("5191701142626689") Then
' Đây là một mã số thẻ tín dụng hợp lệ.
End If

Phương thức này giả định mọi dấu “-” và ký tự đặc biệt đã bị loại khỏi chuỗi. Nếu không chắc bước này đã được thực hiện hay chưa, bạn có thể viết thêm mã để kiểm tra mỗi ký tự có phải là chữ số hay không bằng cách duyệt qua từng ký tự trong chuỗi và gọi phương thức Char.IsDigit trên mỗi ký tự. Mục 1.6 đã giải thích kỹ thuật này.
Bạn cũng có thể xác định ai đã phát hành thẻ tín dụng bằng cách xét tiền tố của mã số thẻ tín dụng. Việc xác định một mã số thẻ tín dụng hợp lệ không có nghĩa là cũng xác định rằng nó được kết nối đến một tài khoản thật sự. Đối với công việc này, bạn cần thực thi mã số thông qua một Credit Card Server. Tuy vậy, giải thuật Luhn cung cấp một cách nhanh chóng để nhận biết và từ chối đầu vào không hợp lệ.

Trích từ “Các giải pháp lập trình Visual Basic .Net (tập 1)”

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: