Diễn Đàn » Hướng Dẫn Lập trình

Mỗi ngày một thủ thuật

0 trả lời, 422 lượt xem — Trang 1 / 1
<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 &gt; 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)"
Đăng nhập để trả lời
0