<Bài viết đã được chỉnh sửa lúc 2007-03-22 09:12:31dvbendoi>
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
Bạn 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 (bạn hãy xem thêm bài viết “Checking Credit Card Numbers” tại [http://perl.about.com/ library/weekly/aa073000b.htm]). 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)"
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
Bạn 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 (bạn hãy xem thêm bài viết “Checking Credit Card Numbers” tại [http://perl.about.com/ library/weekly/aa073000b.htm]). 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)"