Прежде всего, я не уверен, что это должно быть в stackoverflow, но я думал, что попробую спросить в любом случае.Алгоритм Luhn или Verhoeff для номеров кредитных карт
В прошлом я всегда использовал алгоритм luhn для проверки ошибок в номерах кредитных карт, но сегодня я решил реализовать алгоритм verhoeff в php, главным образом, чтобы убить время.
Я проверил его на своих карточных номерах, и это сработало нормально, и это заставило меня задуматься о том, следует ли использовать verhoeff over luhn для проверки ошибки в номере кредитной карты в будущем.
Теперь мои вопросы:
Будет ли любое значительное преимущество в использовании Verhoeff над Лун?
Я знаю, что verhoeff немного сложнее в его реализации, и он может обнаруживать больше ошибок транскрипции, чем luhn, что, естественно, заставило бы меня поверить, что это немного медленнее, но помимо преимущества обнаружения больше ошибок транскрипции и (если вы действительно можете это назвать), чтобы быть немного медленнее, я не могу думать о каких-либо других реальных различиях.
Будет ли алгоритм verhoeff работать для всех основных карт?
Я знаю, что luhn будет работать для всех основных карт, но верхофф также будет работать для всех из них? Я полагаю, что он будет работать для всех, но я думал, что должен все равно проверить.
Есть ли причина, по которой я только видел людей, использующих luhn, для проверки номеров кредитных карт?
За все время работы в качестве разработчика я действительно видел людей, использующих алгоритм luhn, для проверки номеров кредитных карт. Есть ли веская причина для этого, или это просто, что лун более известен?
Любая помощь была бы оценена, спасибо за ваше время.
После прочтения вашего ответа я также смущен тем, как я проверил свои карты. Я проверил 2 разных карты, один говорит mastercard, один говорит о визе, и оба они «проверены». После прочтения вашего ответа я собираюсь попытаться больше изучить это, и я, конечно же, буду ждать, чтобы узнать, какие могут быть другие ответы;) Спасибо за ваше время! –
Пример действительной PAN; 5555555555554444 luhn = pass verhoeff = fail –
Еще раз спасибо за ваш ответ andrew. Я думаю, что я просто сделаю это до удачи. Но теперь вы помогли мне понять это намного лучше, и Алекс К, благодарю вас за ваш пример. –