1585540
Thuật toán Luhn
https://vi.wikipedia.org/wiki?curid=1585540
Title: Thuật toán Luhn
Thuật toán Luhn hoặc công thức Luhn, cũng được biết là thuật toán "modulus 10" hay "mod 10", nó được đặt theo tên người sáng tạo ra nó, nhà khoa học của IBM Hans Peter Luhn, là một công thức tổng kiểm đơn giản được sử dụng để xác thực nhiều loại số nhận dạng, chẳng hạn như số thẻ tín dụng, IMEI, National Provider Identifier tại Mỹ, mã Social Insurance Numbers tại Canada, Số ID tại Israel, Nam Phi, Số an sinh xã hội Hy Lạp (ΑΜΚΑ), và các mã khảo sát xuất hiện trên biên lai của , Taco Bell, và Tractor Supply Co. Nó được mô tả trong bằng sáng chế tại Mỹ số 2,950,048, nộp vào ngày 6 tháng 1 năm 1954 và được cấp vào ngày 23 tháng 8 năm 1960..
Thuật toán này thuộc phạm vi công cộng và được sử dụng rộng rãi ngày nay. Nó được quy định trong ISO/IEC 7812-1. Nó không có ý định là một hàm băm bảo mật bằng mật mã; nó được thiết kế để bảo vệ chống lại các lỗi vô ý, không phải các cuộc tấn công độc hại. Hầu hết các thẻ tín dụng và nhiều số nhận dạng chính phủ sử dụng thuật toán như một phương pháp đơn giản để phân biệt các số hợp lệ với các số bị nhầm hoặc không chính xác.
Mô tả.
Thuật toán dùng để tính toán số này như sau:
Bước 1: Nhân đôi giá trị của những số ở vị trí chẵn tính từ phải sang bao gồm cả số Check Digit (là các số ở vị trí 2, 4, 6... 14), trong đó số thứ 1 là số ngoài cùng phía bên phải của chuỗi số IMEI.
Bước 2: Cộng dồn tất cả các chữ số riêng lẻ của các số thu được ở bước 1, cùng với các số ở vị trí lẻ (là các số ở vị trí 1, 3, 5...,13) trong chuỗi số IMEI.
Bước 3: Nếu kết quả ở bước 2 là một số chia hết cho 10 thì số A sẽ bằng 0. Nếu kết quả ở bước 2 không chia hết cho 10 thì A sẽ bằng số chia hết cho 10 lớn hơn gần nhất trừ đi chính kết quả đó, tức là tổng các số kể cả A phải chia hết cho 10.