Как правильно сгенерировать случайное число для действительной кредитной карты?

Я разрабатываю набор инструментов на Java для проверки и работы с кредитными картами. Пока у меня есть поддержка:

  • проверка ЛУН.

  • Проверка даты (простое истечение срока действия ).

  • Проверка длины кода карты (CVV, CVC, CID )на основе бренда (Visa, MasterCard и т. д. ).

  • Проверка длины номера кредитной карты (на основе бренда ).

  • Проверка БИН/ИИН (по базе действительных номеров ).

  • Скрытие цифр (425010******1234)

Чтобы сделать набор инструментов немного более полным, я хотел бы создать генератор случайных чисел для кредитных карт на основе карт разных марок. Надеюсь, эта функциональность ()сделает мои тестовые примеры немного более надежными.

По сути, я хотел бы иметь возможность генерировать числа, которые:

  • ЛУН действителен

  • Действительно на основе префиксов бренда

  • Действителен на основе номеров префиксов БИН/ИИН

Для действительных номеров карт БИН / ИИН я думаю найти случайный номер БИН / ИИН из базы данных (на основе бренда, конечно ), а затем добавить оставшиеся цифры, используя Random. Очевидно, что в большинстве случаев это будет неверно, и мне придется увеличивать одну из цифр, пока она не пройдет проверку LUHN.

Кажется, я не могу придумать лучшего способа. Возможно, кто-то мог бы предложить что-то немного умнее...?

С нетерпением ждем ваших предложений! Заранее спасибо!:)

8
задан carlspring 29 March 2017 в 10:17
поделиться