簡體   English   中英

魯恩算法問題

[英]Luhn algorithm issues

我決定使用Luhn算法來驗證一些瑞典的社會保險號碼。 盡管有一些問題,但我自己編寫了函數,使它可以按計划工作。 通過我的代碼和其他我嘗試過的代碼,我發現它仍然可以驗證簡單的組合,例如2222222222和4444444444是有效的。

這兩個示例很容易避免,但隨后讓我想知道其余組合是假的,但仍使用該算法驗證為正確。

是我,以及我看過的那些示例,這些代碼做錯了什么,還是算法的已知錯誤? 如果是這樣,我該如何解決?還是有其他更合適的方法?

Luhn算法並不旨在驗證SSN編號是否有效。 只有它是有效格式。 它有助於捕獲錯誤輸入的數字,並使黑客/垃圾郵件發送者嘗試破壞系統變得更加困難。 這並不是要阻止輸入錯誤的數字。

該算法還用於美國的信用卡號。 但是測試卡號(例如4111111111111111)可以通過。 這對於在您嘗試付款之前捕獲差額數字非常有幫助,即使每次付款失敗,每次付款都會產生費用。 但是要最終知道信用卡號是否正確,您需要實際對其進行收費。

從理論上講,這些有效的數字-Luhn算法是一種用於輸入錯誤數字的人的校驗和,而不是用於告訴他們是否已編入數字。

例如,在支付網關(在英國)中使用的標准測試信用卡之一是4444333322221111,它恰好是有效的Visa卡號。 由於該卡沒有分配給任何人,因此嘗試用它進行實際支付會失敗,但這與校驗位無關,並且與數字背后的含義無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM