|
|
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Привед други! Илья. Сова. Сашик. Дима. Зяма. И другие (ш)кодеры, орхи-текторы, аналитеги и сочувствующие. Не был тут тыщу лет. Сорян. Привален был завалами проекта. Но сейчас выдалась минутка. На днях попал в руки алгоритм расчёта контрольной цифры в банковских картах (обычно кредитки с 16-значным номером типа Visa, MasterCard). Первоисточника найти не могу. Есть осколочные сведения об алгоритме для кредиток. http://vsemproblemam.net/credit-cards/sekrety-creditnyh-card-o-kotoryh-vam-ne-govoryat.html Возможно он называется Luhn-algorithm однако неизвестно работает-ли для номеров с более чем 16 разрядов и во всех-ли банках поддерживается его каноничная версия. Мой говно-кодец (без проверок на валидность формата). Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Вобщем предлагаю обсудить слабые места. Непонятно фиксит-ли контрольная цифра случай случайной замены похожих цифр (например 3 на 8). И если этот алгоритм не надежен то какой надежен. Или случайные перестановки местами цифирок (типа 89 => 98). Также вопрос интересно рассмотреть не только для банковских карт но и для ИНН физлиц https://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика для которых я еще пока ничено не накодил но тоже интересно. Также интересны ваши истории из практики и разные случаи. Как номера хранят в БД, чекают-ли эту контрольную цифру и т.п. P.S. Хардкод приветствуется! P.P.S. Моар хардкода!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 13:41 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Затестил две карты (виза и мастер разных банков) - обе true Затестил двухзначные перестановки: 09 и 90 дают одно и тоже sum % 10 = 9. Немного причесал твой код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 14:29 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
По идее если поменять местами 0 и 9 то девятка должна удваиваться о остатком 8(mod 10) и сумма должна изменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 15:58 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Плохо считал. Нечетная: 9 Четная: (9*2 + 1) % 10 = 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 16:15 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
А точно. +1 забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 16:18 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Может быть лучше отказаться от использования операции остатка от деления на 10? Достаточно будет вычесть 10 из двузначного числа, поскольку оно не превосходит 20. Можно ли как-то отказаться от сопровождения pos, не хотелось бы сопровождать её. И я бы переименовал res в temp или t, как правило, под res мы понимаем результат выполнения функции, а не временную переменную)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 17:51 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
mayton На днях попал в руки алгоритм расчёта контрольной цифры в банковских картах (обычно кредитки с 16-значным номером типа Visa, MasterCard). Если бы вам на днях случайно попался алгоритм расчета CVC2 или других аналогичных кодов безопасности по номеру карты, то уверен обсуждение данного вопросы было бы намного живее)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 18:01 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Проверил 16-тизначные номера карт 8-ти банков, все говорят true. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 20:11 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
maytonТакже интересны ваши истории из практики и разные случаи. Как номера хранят в БД, чекают-ли эту контрольную цифру и т.п. Проверял EAN13 на входе из посторонних источников, польза есть, откровенную лажу набитую руками отфильтровывало. Но не панацея, копипаст нормального товара с последующим изменением наименования проскакивал. ИНН нет смысла проверять, банки проверят когда деньги отправить захочешь, не совпадет - платеж не зачислят получателю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 20:21 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
SashaMercuryалгоритм расчета CVC2 это случайное число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 20:39 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonТакже интересны ваши истории из практики и разные случаи. Как номера хранят в БД, чекают-ли эту контрольную цифру и т.п. Проверял EAN13 на входе из посторонних источников, польза есть, откровенную лажу набитую руками отфильтровывало. Но не панацея, копипаст нормального товара с последующим изменением наименования проскакивал. ИНН нет смысла проверять, банки проверят когда деньги отправить захочешь, не совпадет - платеж не зачислят получателю. Украинские ИНН (10-значное целое) проверяется по аналогичной схеме. Только ведомства которые их распределяли не следовали этой формуле и насоздавали кучу битых ИНН. Тоесть алгоритмически, проверка не проходит но практически бумага (справка о выдаче ИНН) является более весомой. И такие ИНН считаются достоверными. Кстати у этого ИНН есть еще одит артефакт. Точная дата рождения зашита в номер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 23:27 |
|
||
|
Тяпничная контрольная цифра
|
|||
|---|---|---|---|
|
#18+
SashaMercuryМожет быть лучше отказаться от использования операции остатка от деления на 10? Достаточно будет вычесть 10 из двузначного числа, поскольку оно не превосходит 20. Можно ли как-то отказаться от сопровождения pos, не хотелось бы сопровождать её. И я бы переименовал res в temp или t, как правило, под res мы понимаем результат выполнения функции, а не временную переменную)) Если ты хочешь рефакторить этот алгоритм то я не против. Но я не вижу особого смысла переименовывать переменные. Заменить MOD на вычитание? Ну что-ж пускай будет. Вроде полезная оптимизация. Но я уже нашел более интересный метод некого господина Верхоффа http://www.cs.utsa.edu/~wagner/laws/verhoeff.html который спецом исследовал такие ошибки как перестановки (он их называет adjacent transpositions) и заложил в свой алгоритм контроля защиту от них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 23:37 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39327371&tid=1340589]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 394ms |

| 0 / 0 |
