2013-09-17 3 views
0

Я хотел бы создать алгоритм, который мог бы определять номера кредитных карт (CCN) из различных типов файлов.Алгоритмы определения количества кредитных карт, уменьшающие ложные срабатывания/негативы

Простой сценарий, как найти CCNS является использование регулярных выражений, как определенно:

  1. Visa: номер ^4[0-9]{12}(?:[0-9]{3})?$ Всех Visa карт начинаются с 4. Новые карты имеют 16 цифр. Старые карточки имеют 13.
  2. MasterCard: ^5[1-5][0-9]{14}$ Все номера MasterCard начинаются с цифр 51 по 55. Все имеют 16 цифр.
  3. American Express: ^3[47][0-9]{13}$ Номер карты American Express начинаются с 34 или 37 и имеют 15 цифр.
  4. Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$ Diners Club карты номера начинаются с 300 через 305, 36 или 38. Все имеют 14 цифр. Карты Diners Club начинаются с 5 и имеют 16 цифр. Это совместное предприятие Diners Club и MasterCard, а должно обрабатываться как MasterCard.
  5. Обнаружение: ^6(?:011|5[0-9]{2})[0-9]{12}$ Открытие номеров карт начинается с 6011 или 65. Все имеют 16 цифр.
  6. JCB: ^(?:2131|1800|35\d{3})\d{11}$ Карты JCB, начинающиеся с 2131 или 1800 имеют 15 цифр. Карты JCB, начинающиеся с 35, имеют 16 цифр.

Затем мы можем проверить найденное число с помощью алгоритма Luhn Mod-10, и если он удовлетворяет условиям, мы можем сказать, что мы нашли CCN.

Но этот простой метод имеет очень большое количество ложных срабатываний/негативов из моего опыта.

Какие алгоритмы или эвристики могут использоваться для уменьшения совпадений ложных срабатываний/негативов? Расширенное программное обеспечение, такое как PCI Data Finder или Card Recon, обеспечивает более надежные результаты и что результаты, безусловно, не достигаются путем простого поиска регулярных выражений и проверки Luhn.

+0

Что именно происходит не так, если вы просто хватаете все цифры 15/16 цифр (опуская дефисы) и проверяете их? Кажется, что он может быть достаточно быстрым (по сравнению с «простым» методом регулярных выражений), чтобы компенсировать ложные срабатывания. – Geobits

ответ

0

Вы можете использовать такой источник, как BINDB.com, чтобы приобрести BIN (идентификационные номера банков) и тем самым уменьшить ложные срабатывания, только учитывая карты, в которых первые шесть (или в некоторых случаях восемь) цифр соответствуют существующему банку-эмитенту карт ,

Если вы искали только открытые карты США, вы могли бы существенно сократить это число с помощью того же подхода.

Смежные вопросы