Алгоритм луна для excel

Содержание

  1. Алгоритм луна формула excel
  2. Алгоритм Луна
  3. Что такое алгоритм Луна?
  4. Объяснение алгоритма Луна
  5. Формула
  6. Примеры Алгоритм Луна
  7. Ограничения
  8. Часто задаваемые вопросы (FAQ)
  9. Рекомендуемые статьи
  10. Про структуру номера банковской карты и алгоритм Луна
  11. Первая цифра в номере карты – это платежная система
  12. Цифры со 2 по 6 включительно — идентификатор эмитента карты
  13. 16 цифра – контрольная, по алгоритму Луна
  14. Примеры для вычисления контрольной цифры
  15. Алгоритм Луна – как это работает
  16. Источники информации
  17. внешние ссылки
  18. Бонус – номер вагона РЖД
  19. А также в нумерации сим-карт

Алгоритм луна формула excel

J0urna1ist,
во вложенном файле в ячейке С9 формула для расчета проверочной цифры для произвольного количества разрядов не более 35. Выборочно протестировал по онлайн калькулятору.
Получилось сделать только с дополнительным диапазоном, к вечеру что-то не соображу как в одну формулу все впихнуть. Может гуру помогут.

Еще понял, что для расчета проверочной цифры и расчета контрольного разряда формулы должны быть разными, т.к. четные и нечетные позиции разрядов будут браться по разному.

J0urna1ist,
во вложенном файле в ячейке С9 формула для расчета проверочной цифры для произвольного количества разрядов не более 35. Выборочно протестировал по онлайн калькулятору.
Получилось сделать только с дополнительным диапазоном, к вечеру что-то не соображу как в одну формулу все впихнуть. Может гуру помогут.

Еще понял, что для расчета проверочной цифры и расчета контрольного разряда формулы должны быть разными, т.к. четные и нечетные позиции разрядов будут браться по разному. Kostya_Ye

Сообщение J0urna1ist,
во вложенном файле в ячейке С9 формула для расчета проверочной цифры для произвольного количества разрядов не более 35. Выборочно протестировал по онлайн калькулятору.
Получилось сделать только с дополнительным диапазоном, к вечеру что-то не соображу как в одну формулу все впихнуть. Может гуру помогут.

Еще понял, что для расчета проверочной цифры и расчета контрольного разряда формулы должны быть разными, т.к. четные и нечетные позиции разрядов будут браться по разному. Автор — Kostya_Ye
Дата добавления — 20.01.2020 в 20:12

Источник

Алгоритм Луна

Что такое алгоритм Луна?

Алгоритм Луна, также известный как алгоритм «модуль 10» или «модуль 10», представляет собой математическую формулу для проверки идентификационных номеров кредитных карт, IMEI, номеров социального страхования, корпоративных идентификационных номеров и т. д. Эта формула контрольной суммы широко используется сегодня, особенно для облегчения онлайн-платежей путем обнаружения случайных ошибок ввода идентификационных номеров.

Формула алгоритма Луна была создана немецким ученым-компьютерщиком Гансом Петером Луном в 1960-х годах, в честь которого эта формула и получила свое название. Он работал в IBM в качестве исследователя и создал этот валидатор, используя современные математические алгоритмы, которые позволяли компьютерам быстро устанавливать правильный ввод идентификационных номеров. Однако он идентифицирует неправильные вводы чисел, а не злонамеренные атаки.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

  1. Калькулятор алгоритма Луна — это инструмент, который помогает определить правильную последовательность и ввод идентификационных номеров для пользователей карт, номеров счетов, идентификационных номеров фирм и т. д.
  2. Глобальные финансовые компании по электронным переводам средств, такие как Visa и Master Card, используют формулу контрольной суммы для ускорения онлайн-платежей и транзакций. Кроме того, исключается перенаправление всего процесса покупки из-за неправильного ввода пользователем номера кредитной или дебетовой карты.
  3. Алгоритм генерирует контрольное значение, которое подтверждает правильность ввода идентификационного номера и в основном совпадает с последней цифрой номера кредитной карты.

Объяснение алгоритма Луна

Валидатор алгоритма Луна помогает проверять и отличать действительные числа от ошибочно введенных или неправильных входных данных. Это метод, широко используемый государственными и корпоративными организациями для устранения случайных ошибок клиентов или пользователей при использовании кредитных карт или идентификационных номеров для онлайн-платежей или транзакций.

Например, проверка Алгоритм Луна для кредитной карты требует обнаружения неправильных номеров карт в терминале торговой точки, когда покупатель совершает платеж любым продавцам в Интернете. Этот алгоритм помогает выполнять повседневные транзакции для отдельных покупателей, предприятий и правительств, устраняя сложности перенаправления всего процесса и экономя время.

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

Сегодня все ведущие компании, предоставляющие финансовые услуги, такие как Master Card, Visa и American Express, используют генератор алгоритмов Луна для проверки идентификационных номеров и облегчения перевода платежей. Таким образом, контрольная сумма, сгенерированная алгоритмом, подходит для устранения любых возможностей человеческой ошибки, которая может переориентировать всю деятельность по покупке.

Точно так же некоторые бренды, выпускающие подарочные карты, такие как Amazon или H&M, используют генератор алгоритма Луна для генерации контрольной суммы для идентификационных номеров.

Формула

Калькулятор алгоритма Луна генерирует контрольную сумму или контрольный ключ, который зависит от одной цифры и определяется суммой заданной последовательности чисел. Этот контрольный ключ иногда похож на последнюю цифру последовательности в целях проверки.

Формула алгоритма Луна для проверки идентификационных номеров включает следующие шаги:

  • Шаг 1 — Последовательность чисел, начинающаяся с первого числа справа или крайнего правого числа, умножается на два или удваивается, и это следует для каждого второго числа от первого крайнего правого числа.
  • Шаг 2 — Если двойное число равно или больше 10, то берется сумма полученных двузначных чисел,
  • Шаг 3 — Следующим шагом является вычисление суммы всех результирующих, которые мы имеем после умножения на 2,
  • Шаг 4 – После получения суммы всех цифр контрольная или контрольная цифра «x» равна = x = (10 – (x mod 10) mod 10). Таким образом, значение «x» является контрольной суммой или контрольным ключом в соответствии с алгоритмом Луна для проверки заданной последовательности чисел. Обычно «x» — это последняя цифра последовательности идентификационных номеров, которую определяет алгоритм.

Примеры Алгоритм Луна

Давайте теперь посмотрим на некоторые расчеты с использованием формулы алгоритма Луна, упомянутой выше,

Рассмотрим следующую последовательность номеров счетов «0974864982x».

Давайте определим правильное значение «x», используя формулу алгоритма Луна,

Последовательность 0974864982xШаг 1 121212121 2x 0дней187дней88дней124дней188дней4xднейШаг 2 1+8 1+2 1+8 9 3 9 Шаг 3 (сумма) 0978834984x

  • Шаг 3 — Сумма всех значений после умножения = 0+9+7+8+8+3+4+9+8+4+x = 60
  • Шаг 4 – Контрольная цифра = (10 – (60 mod 10)) mod 10 = 5
  • Таким образом, значение x и полный номер счета равны «09728649825».
  • Можно проверить контрольный номер «5», вычислив сумму полного номера счета = 0 + 9 + 7 + 2 + 8 + 6 + 4 + 9 + 8 + 2 + 5 = 60

Таким образом, если при вводе идентификационного номера произошла ошибка и результирующая не равна 0 или не кратна 10, система обнаруживает ошибку и предупреждает пользователя.

Компании и сети, выпускающие кредитные карты, используют математическую формулу для предотвращения утечки данных, защиты своих сетей и упрощения работы пользователей. Таким образом, алгоритм Луна или Modulus 10 является одним из таких инструментов, помогающих им в проверке идентификационных номеров.

Кредитные карты удобны для мгновенных платежей и обеспечивают более быстрое разрешение проблем и обнаружение ошибок. Кроме того, банки и сети, выпускающие карты, используют эти алгоритмы для быстрого шифрования и расшифровки данных с помощью программного обеспечения, включающего алгоритмы Луна.

Точно так же Visa — глобальная компания по электронным переводам средств — использует 13-й символ или цифра идентификационного номера, в то время как другие основные сети используют последнюю цифру.

Ограничения

Хотя формула алгоритма Луна является полезным инструментом для проверки большого набора идентификационных номеров, этот метод также имеет определенные ограничения, такие как:

  1. Алгоритм ограничивает обнаружение определенных последовательностей, в которых пара может поменяться позициями и по-прежнему иметь одинаковую контрольную сумму. Например, в последовательности чисел «02374598» и «82374590» есть 0 и 8. Однако, если 0 заменить на 8, а 8 заменить на 0, результирующая контрольная сумма останется прежней.
  2. Во-вторых, алгоритм не может обнаружить двойную ошибку, например, порядковые номера 001133 и 001166 будут иметь одинаковую контрольную сумму «3», и может не обнаружить неправильный ввод.
  3. Кроме того, если в начале последовательности присутствует 0 или его отсутствие в последовательности, это не приведет к изменению контрольной суммы Луна. Например, число «000786» и только «786» будут иметь одинаковую контрольную сумму. Однако неправильная последовательность ввода чисел может не определить ошибку пользователя, если их контрольные суммы совпадают.

Часто задаваемые вопросы (FAQ)

1. Для чего используется алгоритм Луна?

Алгоритм Луна полезен для точной идентификации и проверки кредитных карт, дебетовых карт, номеров социального страхования или корпоративных идентификационных номеров. Когда пользователь карты вводит номер своей карты во время покупки в Интернете, алгоритм Луна помогает предупредить его о случайных и неправильных вводах. Таким образом, компании-эмитенты карт включают этот алгоритм в свои сети и операционные системы.

2. Как работает алгоритм Луна?

Калькулятор алгоритма определяет контрольный ключ или контрольную сумму для проверки идентификационного номера. Таким образом, самое правое число умножается на два или удваивается, что следует за каждым альтернативным числом в последовательности. На следующем шаге получается сумма всех этих значений, равная нулю или кратная 10. Таким образом, добавление контрольного числа к последовательности должно иметь суммарное значение, равное нулю или кратное 10, в соответствии с алгоритмом Луна. В противном случае алгоритм идентифицирует неверный или случайный ввод.

3. Использует ли Visa алгоритм Луна?

Да, Visa использует алгоритм Луна для облегчения денежных переводов по всему миру с помощью транзакций по кредитным и дебетовым картам. Кроме того, это помогает компании завоевать доверие пользователей и повышает удобство работы пользователей, устраняя длительный процесс перенаправления из-за случайного ввода идентификационных номеров. Но этот алгоритм не генерирует и не проверяет CVV, дату истечения срока действия или информацию о магнитных полосах.

Рекомендуемые статьи

Эта статья представляет собой руководство по тому, что такое алгоритм Луна и его значение. Здесь мы объясняем ее применение, формулу, примеры и ограничения формулы. Вы также можете просмотреть наши рекомендуемые статьи о корпоративных финансах –

  • Защищенная и необеспеченная кредитная карта
  • Теорема Байеса
  • Прогнозное моделирование

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Источник

Про структуру номера банковской карты и алгоритм Луна

Бесплатный онлайн инструмент проверки банковских карт, это профессиональный инструмент, который проверит данные номера кредитной карты, покажет от какова банка карта сбербанка, тинькофф или любого другого, ну или просто можете проверить кредитная ли карта.

Первая цифра в номере карты – это платежная система

1 Это различные авиакомпании
2 Тоже авиалинии, а также наша система МИР
3 American Express, Maestro
4 VISA
5 MasterCard, Maestro
6 China UnionPay
7 Топливные компании
8 Предприятия в сфере телекоммуникаций
9 Государственные структуры

То есть по этой первой цифре сразу не определить, к какой конкретной платежной системе относится карта.
Видимо, за исключением цифры 4 – везде упоминается под этим номером только VISA.

Посмотрел на свою дисконтную карту одной из топливных компаний – действительно, начинается на 7.

Цифры со 2 по 6 включительно — идентификатор эмитента карты

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

16 цифра – контрольная, по алгоритму Луна

И последняя 16 цифра – это цифра для правильности всего комплекса цифр, образующих номер карточки, и эта цифра формируется алгоритмом Луна.
Алгоритм разработан сотрудником IBM Гансом Питером Луном, в 1954 году, запатентован в 1960.
Этот алгоритм не является шифровальным средством, используется только для проверки, правильно ли были указаны цифры номера банковской карты.
Например, вы делаете онлайн-платеж, вводите данные своей карты.
Первое, что наверняка сделает система проверки – это проверит по этому алгоритму, не сделали ли вы случайно ошибку при ручном наборе номера.

Примеры для вычисления контрольной цифры

Num[1..N] — номер карты, Num[N] — контрольная цифра.

sum = 0 for i = 1 to N-1 do p = Num[N-i] if (i mod 2 <> 0) then p = 2*p if (p > 9) then p = p – 9 end if end if sum = sum + p next i //дополнение до 10 sum = 10 – (sum mod 10) if (sum == 10) then sum = 0 end if Num[N] = sum

#include // заголовок объявляющий функцию strlen() int luhn(const char* card_number) // принимаем в аргументы номер карты < int len = strlen(card_number); // узнаем длину номера карты int number = 0; // текущая цифра в цикле (см. ниже) int check_digit = 0; // переменная которая будет хранить проверочную цифру int i; for(i = 0; i 9) // согласно алгоритму, ни одно число не должно быть больше 9 < number -= 9; // второй вариант сведения к единичному разряду >> check_digit += number; // прибавляем к check_digit номера согласно алгоритму > return (check_digit * 9) % 10; // возвращаем проверочное число вычисленное согласно алгоритму >

#include int luhn(std::string input) < int number = 0; int check_digit = 0; for(int i = 0; i 9) < number -= 9; >> check_digit += number; > return (check_digit * 9) % 10; >

Алгоритм Луна – как это работает

Набросал в Excel таблицу – надо же проверить на своей карте, как это работает, мало ли чего напишут.
Проверил – работает.
Пронумеруем по порядку 16 цифр карты
1 шаг.
Все цифры, стоящие на нечетных местах, т.е. 1,3,5, …15 , умножаем на 2
Все цифры, стоящие на четных местах, т.е. 2,4,6, …, 16, используем дальше как они есть.
Получили ряд из 16 новых цифр-чисел.
2 шаг.
Теперь все полученные числа нужно будет сложить, но сначала нужно сделать так, чтобы все числа в итоговом ряду были только однозначными.
Если какое-то произведение оказалось двузначным, то от него вычитаем 9.
Например, было 12, минус 9, запишем 3.
Или просто записываем это двузначное число как два однозначных. Например, вместо 12 просто запишем две цифры: 1 и 2. При итоговом суммировании это и будет та же цифра 3.
3 шаг.
Все полученные в результате преобразования однозначные числа складываются.
Полученная сумма обязательно должна делиться на 10 нацело.
В нашем примере эта сумма оказалась равна 80.
Если у вас не получилось сумма, которая ровно делится на 10, это не означает, что у вас неправильная карта.
Это означает, что вы где-то ошиблись в расчетах.
Кстати.
В оригинале описания алгоритма нумерация делается справа налево. И этот алгоритм применяется на практике не только для банковских карт с 16-значным номером, но и, например, для 8-значных номеров вагонов РЖД, для номеров сим-карт.

Источники информации

  • U.S. Patent 2 950 048 Computer for Verifying Numbers, Hans P. Luhn, August 23, 1960.

внешние ссылки

  • Реализация на 88 языках в проекте Rosetta Code

Бонус – номер вагона РЖД

Алгоритм Луна используется в различных областях, где есть необходимость какой-либо нумерации.
Например, РЖД использует этот механизм для контроля нумерации вагонов.
То есть алгоритм. в принципе, может работать с последовательностями цифр различной длины.

А также в нумерации сим-карт

Если вы посмотрите на номер своей сим-карты – он обязательно будет начинаться с 89.
В любой стране.

Источник

 

secundus

Пользователь

Сообщений: 4
Регистрация: 25.02.2014

#1

12.11.2014 20:28:54

Нужна помощь в написании формулымакроса по алгоритму Луна.
есть 18 цифр и мне нужно получить 19ое число по этому алгоритму. На просторах инета нашёл только формулы для проверки на ложьистину контрольного числа.Мне же нужно чтобы контрольное число генерировалось и подставлялось.

Вот формула истиналожь:

Код
=ОСТАТ(СУММ(ПСТР(B2;{1:2:3:4:5:6:7:8}*2-{1;0};1)*{2;1}-(ПСТР(B2;{1:2:3:4:5:6:7:8}*2-{1;0};1)*{2;1}>9)*9);10)=0

нашёл макрос:

Код
Function Luna(num$) As Boolean
    Dim i%, sum%, p%
    For i = 1 To Len(num)
        p% = Val(Mid(num, i, 1))
        If i Mod 2 Then sum = sum + p * 2 Mod 9 Else sum = sum + p
    Next i
    Luna = sum Mod 10 = 0
End Function 

но он тоже проверяет на ложь, истина……

Изменено: vikttur14.07.2021 12:53:54

 

На просторах интернета, там, откуда эти формула и код, в первом сообщении ссылка на Википедию, статья «Алгоритм Луна». В ней есть раздел «Алгоритм вычисления контрольной цифры». Первый алгоритм после элементарного допиливания под VBA считает контрольную цифру.
Удачи

 

xsandu

Пользователь

Сообщений: 2
Регистрация: 23.01.2016

#3

05.02.2016 04:42:36

Алгоритм Луна для проверки IMEI номера (15-значного).
Результат — Истина/Ложь

Код
=ОСТАТ(СУММ(ПСТР(A2;{1:2:3:4:5:6:7}*2-{0;1};1)*{2;1}-(ПСТР(A2;{1:2:3:4:5:6:7}*2-{0;1};1)*{2;1}>9)*9;ПРАВСИМВ(A2;1));10)=0

Прикрепленные файлы

  • IMEI проверка по алгоритму Луна.xlsx (9.59 КБ)

 

xsandu

Пользователь

Сообщений: 2
Регистрация: 23.01.2016

#4

05.02.2016 04:52:39

Цитата
secundus написал: Мне же нужно чтобы контрольное число генерировалось и подставлялось.

Расчет 19-го знака по алгоритму Луна по известным первым 18 знакам можно выполнить так:

Код
=ОКРУГЛВВЕРХ(СУММ(ПСТР(A2;{1:2:3:4:5:6:7:8:9}*2-{0;1};1)*{2;1}-(ПСТР(A2;{1:2:3:4:5:6:7:8:9}*2-{0;1};1)*{2;1}>9)*9);-1)-СУММ(ПСТР(A2;{1:2:3:4:5:6:7:8:9}*2-{0;1};1)*{2;1}-(ПСТР(A2;{1:2:3:4:5:6:7:8:9}*2-{0;1};1)*{2;1}>9)*9)

затем объединить строки

Код
=A2&B2

Прикрепленные файлы

  • Расчет КЧ для 18-ти знаков по алгоритму Луна.xlsx (9.47 КБ)

 

journalist

Пользователь

Сообщений: 3
Регистрация: 17.01.2020

Подскажите пожалуйста, как сделать подсчет контрольного числа имея число из 25 символов, формулу дописал, 24 считает, 25 отказывается постоянно выдает: #ЗНАЧ!

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#6

17.01.2020 16:57:50

Вариант на Power Query для чисел произвольной длины.

Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    AddedCustom = Table.AddColumn(Source, "Luhn algorithm", each 
        [list = List.Transform( Text.ToList( Text.Reverse( Text.From( [Base Number] ) ) ), Number.From ),
         calc = List.Transform( List.Alternate( list, 1, 1, 1 ), (x) => x * 2 - 9 * Number.From( x > 4 ) ),
         out = Number.Mod( 10 - Number.Mod( List.Sum( calc & List.Alternate( list, 1, 1 ) ), 10 ), 10 )][out])
in
    AddedCustom

Прогнал на массиве 230 тыс строк сформированных рандомно чисел, отработал за 4 секунды.

Прикрепленные файлы

  • Расчет КЧ по алгоритму Луна.xlsx (17.9 КБ)

Изменено: PooHkrd17.01.2020 17:44:44

Вот горшок пустой, он предмет простой…

 

Кто может подсказать решение?
Дано: неполный номер банковской карты формата 1234 56ХХ ХХХХ 7890
Требуется выдать все возможные варианты написания.

Сколько их будет всего?  

Изменено: vikttur14.07.2021 12:55:37

 

whateverlover

Пользователь

Сообщений: 435
Регистрация: 15.06.2018

#8

14.07.2021 01:00:38

Цитата
Dody Fischer написал:
Сколько их будет всего?  

Ноль

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#9

14.07.2021 04:03:25

Цитата
Dody Fischer написал:
Сколько их будет всего?

не поверите! ровно 100 тысяч шт.
000007
000015
000023
000031
000049
000056
000064
000072
000080
000098
000106
и т.д.)

Изменено: Ігор Гончаренко14.07.2021 04:05:29

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

цитируйте, когда это необходимо [МОДЕРАТОР]

Интересно!
как вы посчитали? сумма по алгоритму должна заканчиваться определенным числом. например сумма возможных вариантов должна быть 6, 16, 26, 36 или 46  

Изменено: vikttur15.07.2021 20:34:12

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Dody Fischer, Вы БОГ цитирования! =)))

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#12

15.07.2021 19:40:12

Dody Fischer,
вы дали такой неполный номер карты:: 1234 56ХХ ХХХХ 7890
подставляете в эту карту вместо ХХХХХХ написанные выше 11 вариантов
1)   1234 5600 0007 7890 — правильный номер карты?
2)   1234 5600 0015 7890 — правильный номер карты?
….
11) 1234 5600 0106 7890 — правильный номер карты?
и так еще 99989 раз)
первых 11 номеров я вам написал, остальные 99989 запомнил))

Изменено: Ігор Гончаренко15.07.2021 19:41:03

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

Алгоритм Луна, как получить следующее значение

J0urna1ist

Дата: Пятница, 17.01.2020, 15:29 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Всем привет!
Имеются числа состоящие из 25 знаков (количество не меняется, всегда 25).
На просторах тырнета нашел такую формулу:

Код

=ОКРУГЛВВЕРХ(СУММ(ПСТР(E3;{1:2:3:4:5:6:7:8:9:10:11:12}*2-{0;1};1)*{2;1}-(ПСТР(E3;{1:2:3:4:5:6:7:8:9:10:11:12}*2-{0;1};1)*{2;1}>9)*9);-1)-СУММ(ПСТР(E3;{1:2:3:4:5:6:7:8:9:10:11:12}*2-{0;1};1)*{2;1}-(ПСТР(E3;{1:2:3:4:5:6:7:8:9:10:11:12}*2-{0;1};1)*{2;1}>9)*9)

Но почему-то она считает только если 24 знака, на 25 почему-то никак не хочет ;(

К сообщению приложен файл:

7941253.xls
(29.0 Kb)

 

Ответить

bigor

Дата: Пятница, 17.01.2020, 15:39 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 804


Репутация:

163

±

Замечаний:
0% ±


нет

Осталось понять, что за алгоритм Луна :) Сейчас получите от здешних модераторов.

 

Ответить

J0urna1ist

Дата: Пятница, 17.01.2020, 15:42 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Осталось понять, что за алгоритм Луна :) Сейчас получите от здешних модераторов.

Етить, а что нужно его описать? о_О или чво?))

 

Ответить

bigor

Дата: Пятница, 17.01.2020, 15:47 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 804


Репутация:

163

±

Замечаний:
0% ±


нет

Нужно описать задачу. Что эта луна делает. Хотя я может один про нее не знаю :(

 

Ответить

Pelena

Дата: Пятница, 17.01.2020, 17:58 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 09:14 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

 

Ответить

Nic70y

Дата: Понедельник, 20.01.2020, 10:04 |
Сообщение № 7

Группа: Друзья

Ранг: Экселист

Сообщений: 8134


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

не понимаю как их переделать

а я не понимаю Вашего примера (Должно быть — почему оно так должно быть…)
массивная формула

Код

=СУММ(ЕСЛИОШИБКА(ОСТАТ(ПСТР(A2;СТРОКА(A$1:A$45)*2-(ОСТАТ(ДЛСТР(A2);2)=0);1)*2-1;9)+1;);ЕСЛИОШИБКА(—ПСТР(A2;СТРОКА(A$1:A$45)*2-ОСТАТ(ДЛСТР(A2);2);1);))

считает согласно описанного алгоритма

К сообщению приложен файл:

8159952.xls
(30.0 Kb)


ЮMoney 41001841029809

 

Ответить

Pelena

Дата: Понедельник, 20.01.2020, 10:26 |
Сообщение № 8

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

J0urna1ist, Ваша формула считает, каким должен быть последний разряд, чтобы сошлась контрольная сумма. Считает правильно. А Вы что подразумеваете под «должно быть»?


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 16:08 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Формула считает правильно если 24 цифры, как только добавляем 25-ую цифру, она ничего не вычисляет!

А Вы что подразумеваете под «должно быть»?

То что должно быть, то число и должно вычисляться!

Сообщение отредактировал J0urna1istПонедельник, 20.01.2020, 16:43

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 16:10 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

НЕТ, ваша формула неправильно считает! Проверить можно в Калькуляторе

а я не понимаю Вашего примера (Должно быть — почему оно так должно быть…)

В примере это то число которое должно получиться (Правильное число)!

Сообщение отредактировал J0urna1istПонедельник, 20.01.2020, 16:40

 

Ответить

YouGreed

Дата: Понедельник, 20.01.2020, 16:11 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 589


Репутация:

123

±

Замечаний:
0% ±


Excel 2010

J0urna1ist, У вас в примере, столбец называется «Должно быть» :D

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 16:13 |
Сообщение № 12

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

J0urna1ist, У вас в примере, столбец называется «Должно быть» :D

Понял ) сорян, запуталси соусем!)

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 16:30 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Короч, думаю, так будет более понятно (хотя зная себя, все еще больше запутаются )))):
Есть число:
381393079204396836023757 — (24 знака), нужно произвести расчет по формуле Луна, а именно вычислить контрольную цифру номера пластиковой карты.

Его можно вычислить на сайте с помощью Калькулятора, вставив в нужное место данное число, мы получаем цифру — 9. Если воспользуемся формулой, то формула подсчитывает тоже самое число, а именно работает правильно. (Прошу заметить на сайте калькулятор выдает два числа: Последний разряд контрольной суммы и Следующая проверочная цифра). Мне нужно только проверочная цифра.

Теперь вопрос:
Если к числу:
381393079204396836023757 — (24 знака)
Добавить один Знак (цифру), или еще сколько либо знаков (цифр), то формула уже считает не правильно, Пример:
3813930792043968360237572 — (25 знаков), правильный ответ — 2 (взято из достоверного источника и с Калькулятора), а формула выдает — 9 что не верно!

Сообщение отредактировал J0urna1istПонедельник, 20.01.2020, 16:54

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 17:02 |
Сообщение № 14

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Вообщем нашел решение:

Тока пппц как его встроить О_о и аще что это…

Сообщение отредактировал J0urna1istПонедельник, 20.01.2020, 17:05

 

Ответить

Kostya_Ye

Дата: Понедельник, 20.01.2020, 17:05 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 271


Репутация:

228

±

Замечаний:
0% ±


Excel 2016

J0urna1ist, добрый день,
Формула, которую вы привели в сообщении #1 как раз считает для последовательности в 24 знака контрольный 25-й знак.
Т.е. для последовательности 381393079204396836023757 проверочная цифра именно 9. Если последовательность 3813930792043968360237579 проверить по алгоритму Луна, то сумма последовательности будет 120, что кратно 10, что означает соответствие алгоритму.
В сообщении #7 Nic70y вам создал формулу для расчета суммы последовательности в пределах 45 знаков, вы пробовали проверить последовательность с ее помощью ?

Для последовательности 381393079204396836023757 калькулятор по вашей ссылке считает проверочную цифру также 9

К сообщению приложен файл:

3262426.png
(23.0 Kb)

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 17:10 |
Сообщение № 16

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Для последовательности 381393079204396836023757 калькулятор по вашей ссылке считает проверочную цифру также 9

ЕПРСТ, добавте к последовательности 381393079204396836023757 цифру 2, и поймете что формула не работает…

К сообщению приложен файл:

5416224.png
(53.7 Kb)

Сообщение отредактировал J0urna1istПонедельник, 20.01.2020, 17:12

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 17:13 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

В сообщении #7 Nic70y вам создал формулу для расчета суммы последовательности в пределах 45 знаков, вы пробовали проверить последовательность с ее помощью ?

Да пробовал, не работает формула, точнее не правильно вычисляет, даже в приведенном Nic70y файле, если проверить на калькуляторе, цифры не правильные!

 

Ответить

Kostya_Ye

Дата: Понедельник, 20.01.2020, 17:17 |
Сообщение № 18

Группа: Проверенные

Ранг: Обитатель

Сообщений: 271


Репутация:

228

±

Замечаний:
0% ±


Excel 2016

J0urna1ist,
по #14 — вам же написали в том форуме, где вы спрашивали, что это решение для Power Query (для Excel 2013 оно в виде бесплатной надстройки)
Какая именно формула ?
из сообщения #1, да неработает, она считает контрольный знак только для последовательности из 24 знаков.

 

Ответить

J0urna1ist

Дата: Понедельник, 20.01.2020, 17:21 |
Сообщение № 19

Группа: Пользователи

Ранг: Новичок

Сообщений: 18


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

hands :D :D :D

из сообщения #1, да неработает, она считает контрольный знак только для последовательности из 24 знаков.

В этом и суть, как сделать, чтобы она считала контрольную цифру из 25 знаков :(

 

Ответить

bigor

Дата: Понедельник, 20.01.2020, 17:43 |
Сообщение № 20

Группа: Проверенные

Ранг: Ветеран

Сообщений: 804


Репутация:

163

±

Замечаний:
0% ±


нет

25 — наверное никак, она хочет «четную» разрядность

 

Ответить


Подборка по базе: Газо-жидкостная хроматография в подтверждении подлинности и коли, технологические карты.docx, №4 Определение количества груза на танкере.doc, Технологические карты учащихся на уроках истории.docx, 2(4) Определение первичных и вторичных поражающих факторов ЧС пр, Практическая №2.2.1. Оформление маршрутной карты.docx, Бланк отчета ПЗ 4.1.4. Определение класса защищенности ГИС.doc, построение структурной карты,лаб3.docx, Бланк отчета ПЗ 4.1.4. Определение класса защищенности ГИС — пе, 06-1613 Технологические карты на обеды.pdf


Определение подлинности банковской карты

и штрих-кода с помощью MS EXCEL

Выполнила:

Преснякова Ангелина Николаевна,

учащаяся 9 класса

Научный руководитель:

Кострова Татьяна Ивановна,

учитель информатики

1 квалификационной категории

Муниципальное бюджетное образовательное учреждение «Хвощевская школа»

Цель — создать программу для определения подлинности банковской карты и штрих-кода, расчета их контрольной цифры, используя возможности MS Excel.

Задачи:

-изучить литературу и интернет-ресурсы по данной теме;

-изучить возможности программы MS Excel;

-создать программы для определения подлинности банковской карты и штрих-кода;

-создать программы для расчета контрольной цифры в номере или коде.

Гипотеза: любой номер пластиковой карты или штрих-код товара можно проверить с помощью программы MS Excel.

Методы исследования:

-эксперимент,

-анализ.

Актуальность

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

Алгоритм проверки подлинности банковской карты

Большинство карт имеет 16 цифр от 0 до9. Числа сгруппированы по 4 цифры, чтобы их легче было прочитать (ABCD EFGH IJKL MNOP).

Контрольная цифра (P) связана с предыдущими цифрами в соответствии с алгоритмом Луна:

1.Каждую цифру в нечетной позиции, начиная с первого числа слева, нужно умножить на 2. Если результат больше 9, необходимо сложить обе цифры этого двузначного числа (или, что-то же самое, вычесть из него 9). Например, если получилось число 14, сложение цифр даёт 1+ 4 = 5, и вычитание: 14-9=5.  

2. Затем складываются все полученные таким образом числа, а также цифры, расположенные на чётных позициях (в том числе последняя контрольная цифра).

3.Если конечная сумма кратна 10, номер карты является подлинным. Заметим, что именно последняя контрольная цифра делает общую сумму кратной 10.

Алгоритм проверки подлинности штрих-кода

Штрих-код EAN o6ычно состоит из 13 цифр

1.сложить цифры на нечетных позициях, начиная с левой и без учета контрольной;
2. К полученному значению прибавить утроенную сумму цифр на четных позициях;
3. Определить контрольную цифру так, чтобы общая сумма была кратна 10

Пример реализации алгоритма Луна:

Рассмотрим на примере номер карты – 5481 7217 6871 5888.

По алгоритму Луна имеем (цифры, стоящие на нечетных позициях, умножаем на 2):

5∙2=10→1+0=1 6∙2=12→1+2=3

8∙2=16→1+6=7 7∙2=14→1+4=5

7∙2=14→1+4=5 5∙2=10→1+0=1

1∙2=2 8∙2=16→1+6=7

Найдем их сумму: 1+7+5+2+3+5+1+7=31

Найдем сумму цифр, стоящих на четных позициях:

4+1+2+7+8+1+8+8=39

Находим контрольную сумму: 31+39=70 (кратно 10).

Значит, номер карты является действительным.

Проверьте сами!

Реализация алгоритма Луна с помощью MS Excel

Пример работы программы по определению подлинности банковской карты

Программа в MS EXCEL для расчета контрольной цифры

Реализация алгоритма проверки подлинности штрих-кода с помощью MS Excel

Пример определения подлинности штрих-кода

Заключение

  • В данной исследовательской работе нами был представлен алгоритм Луна, который использует простое правило вычисления контрольной суммы для проверки идентификационных номеров, рассмотрены примеры его реализации.
  • Были написаны программы в MS Excel, позволяющие определить подлинность банковской карты, штрих-кода, расчета контрольных цифр.
  • доказана гипотеза: любой номер пластиковой карты или штрих-код товара можно проверить с помощью программы MS Excel

Список литературы

Мир математики: в 40 т: Т.2:Жуан Гомес. Математики, шпионы и хакеры. Кодирование и криптография./Пер. с англ.-М.:Де Агостини, 2014

Алгоритм расчета контрольной цифры.- https://pravo.studio/dengi-dengi/algoritm-rascheta-kontrolnoy-tsifryi-nomera-31517.html

Алгоритм Луна.- https://planetcalc.ru/

Определение контрольной цифры, коды региональных организаций.- https://ru.wikipedia.org/

Организация расчетов с использованием банковских платежных карт.- https://knowledge.allbest.ru/bank/3c0b65625b3ac68a5d53b89421316c27_0.html

Самоучитель Excel.- https://exceltable.com/uroki-excel/samouchitel-excel-s-primerami

Перейти к содержимому

Алгоритм Лу́на (англ. Luhn algorithm) — алгоритм вычисления контрольной цифры номера пластиковых карт в соответствии со стандартом ISO/IEC 7812. Не является криптографическим средством, предназначение алгоритма в первую очередь — выявление ошибок, вызванных непреднамеренным искажением данных (например, при ручном вводе номера карты, при приёме данных о номере социального страхования по телефону). Позволяет лишь с некоторой степенью достоверности судить об отсутствии ошибок в блоке цифр, но не даёт возможности локализации и коррекции обнаруженной неточности.

Алгоритм разработан сотрудником фирмы IBM Гансом Питером Луном, описан в США в 1954 году, патент получен в 1960 году.

Наиболее распространённые применения для подсчёта контрольной цифры:

  • Номера всех банковских карт
  • Номера некоторых дисконтных карт
  • Коды социального страхования
  • IMEI-коды.
  • Расчёт контрольного знака единого 8-значного номера железнодорожного вагона на РЖД.

В настоящее время содержание алгоритма является публичным достоянием.

Пример подсчета банковской карты:

алгоритм луна

Алгоритм «Луна» в Excel(с проверкой на валидность):

¦¬¦-¦-8

Бесплатный онлайн инструмент проверки банковских карт, это профессиональный инструмент, который проверит данные номера кредитной карты, покажет от какова банка карта сбербанка, тинькофф или любого другого, ну или просто можете проверить кредитная ли карта.

Первая цифра в номере карты – это платежная система

1 Это различные авиакомпании
2 Тоже авиалинии, а также наша система МИР
3 American Express, Maestro
4 VISA
5 MasterCard, Maestro
6 China UnionPay
7 Топливные компании
8 Предприятия в сфере телекоммуникаций
9 Государственные структуры

То есть по этой первой цифре сразу не определить, к какой конкретной платежной системе относится карта.
Видимо, за исключением цифры 4 – везде упоминается под этим номером только VISA.

Посмотрел на свою дисконтную карту одной из топливных компаний – действительно, начинается на 7.

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

Цифры со 2 по 6 включительно — идентификатор эмитента карты

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

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

16 цифра – контрольная, по алгоритму Луна

И последняя 16 цифра – это цифра для правильности всего комплекса цифр, образующих номер карточки, и эта цифра формируется алгоритмом Луна.
Алгоритм разработан сотрудником IBM Гансом Питером Луном, в 1954 году, запатентован в 1960.
Этот алгоритм не является шифровальным средством, используется только для проверки, правильно ли были указаны цифры номера банковской карты.
Например, вы делаете онлайн-платеж, вводите данные своей карты.
Первое, что наверняка сделает система проверки – это проверит по этому алгоритму, не сделали ли вы случайно ошибку при ручном наборе номера.

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

Примеры для вычисления контрольной цифры

VBA

Num[1..N] — номер карты, Num[N] — контрольная цифра.

sum = 0 for i = 1 to N-1 do p = Num[N-i] if (i mod 2 <> 0) then p = 2*p if (p > 9) then p = p – 9 end if end if sum = sum + p next i //дополнение до 10 sum = 10 – (sum mod 10) if (sum == 10) then sum = 0 end if Num[N] = sum

Java

import java.util.*; import java.lang.String; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print(“Enter the number: “); String value = scan.next(); int sum1 = 0; int sum2=0; final int nDigits = value.length(); for (int i = nDigits; i> 0; i–){ int digit = Character.getNumericValue(value.charAt(i-1)); int z=digit;int y=digit; if (i % 2 != 0){ z *= 2; if (z > 9) { z -= 9; } sum1 += z; } else sum2 += y; } int sum=sum1+sum2; if (value.length()!=16) sum=1; System.out.println(sum); if (sum%10 == 0){ System.out.println (“Card Valid”); } else { System.out.println(“Card not Valid”); } } }

C

#include <string.h> // заголовок объявляющий функцию strlen() int luhn(const char* card_number) // принимаем в аргументы номер карты { int len = strlen(card_number); // узнаем длину номера карты int number = 0; // текущая цифра в цикле (см. ниже) int check_digit = 0; // переменная которая будет хранить проверочную цифру int i; for(i = 0; i < len; i++) // главный цикл, в процессе него вычисляется проверочная цифра { number = card_number[i] – ‘0’; // переводим цифру из char в int if(i % 2 != 0) // если позиция цифры нечётное, то: { number *= 2; // умножаем цифру на 2 if(number > 9) // согласно алгоритму, ни одно число не должно быть больше 9 { number -= 9; // второй вариант сведения к единичному разряду } } check_digit += number; // прибавляем к check_digit номера согласно алгоритму } return (check_digit * 9) % 10; // возвращаем проверочное число вычисленное согласно алгоритму }

C++

#include <string> int luhn(std::string input) { int number = 0; int check_digit = 0; for(int i = 0; i < input.length(); i++) { number = input[i] – ‘0’; if(i % 2 != 0) { number *= 2; if(number > 9) { number -= 9; } } check_digit += number; } return (check_digit * 9) % 10; }

Источник: http://visacon.ru/stati/13991-algoritm-luna.html

Алгоритм Луна – как это работает

Алгоритм Луна - как это работает

Набросал в Excel таблицу – надо же проверить на своей карте, как это работает, мало ли чего напишут.
Проверил – работает.
Пронумеруем по порядку 16 цифр карты
1 шаг.
Все цифры, стоящие на нечетных местах, т.е. 1,3,5, …15 , умножаем на 2
Все цифры, стоящие на четных местах, т.е. 2,4,6, …, 16, используем дальше как они есть.
Получили ряд из 16 новых цифр-чисел.
2 шаг.
Теперь все полученные числа нужно будет сложить, но сначала нужно сделать так, чтобы все числа в итоговом ряду были только однозначными.
Если какое-то произведение оказалось двузначным, то от него вычитаем 9.
Например, было 12, минус 9, запишем 3.
Или просто записываем это двузначное число как два однозначных. Например, вместо 12 просто запишем две цифры: 1 и 2. При итоговом суммировании это и будет та же цифра 3.
3 шаг.
Все полученные в результате преобразования однозначные числа складываются.
Полученная сумма обязательно должна делиться на 10 нацело.
В нашем примере эта сумма оказалась равна 80.
Если у вас не получилось сумма, которая ровно делится на 10, это не означает, что у вас неправильная карта.
Это означает, что вы где-то ошиблись в расчетах.
Кстати.
В оригинале описания алгоритма нумерация делается справа налево. И этот алгоритм применяется на практике не только для банковских карт с 16-значным номером, но и, например, для 8-значных номеров вагонов РЖД, для номеров сим-карт.

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

Источники информации

  • U.S. Patent 2 950 048 Computer for Verifying Numbers, Hans P. Luhn, August 23, 1960.

Источник: http://dic.academic.ru/dic.nsf/ruwiki/255031

внешние ссылки

  • Реализация на 88 языках в проекте Rosetta Code

Источник: http://ru.abcdef.wiki/wiki/Luhn_algorithm

Бонус – номер вагона РЖД

Бонус - номер вагона РЖД

Алгоритм Луна используется в различных областях, где есть необходимость какой-либо нумерации.
Например, РЖД использует этот механизм для контроля нумерации вагонов.
То есть алгоритм. в принципе, может работать с последовательностями цифр различной длины.

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

А также в нумерации сим-карт

А также в нумерации сим-карт

Если вы посмотрите на номер своей сим-карты – он обязательно будет начинаться с 89.
В любой стране.

Источник: http://fishki.net/3069397-pro-strukturu-nomera-bankovskoj-karty-i-algoritm-luna.html

( 1 оценка, среднее 5 из 5 )


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

‘ Version 1.0.0
‘ You may use these functions directly in Excel: «=luhnCheck(A55)»
‘ probably only needed internally
Function luhnSum(InVal As String) As Integer
Dim evenSum As Integer
Dim oddSum As Integer
evenSum = 0
oddSum = 0
Dim strLen As Integer
strLen = Len(InVal)
Dim i As Integer
For i = strLen To 1 Step 1
Dim digit As Integer
digit = CInt(Mid(InVal, i, 1))
If ((i Mod 2) = 0) Then
oddSum = oddSum + digit
Else
digit = digit * 2
If (digit > 9) Then
digit = digit 9
End If
evenSum = evenSum + digit
End If
Next i
luhnSum = (oddSum + evenSum)
End Function
‘ for the curious
Function luhnCheckSum(InVal As String)
luhnCheckSum = luhnSum(InVal) Mod 10
End Function
‘ true/false check
Function luhnCheck(InVal As String)
luhnCheck = (luhnSum(InVal) Mod 10) = 0
End Function
‘ returns a number which, appended to the InVal, turns the composed number into a valid luhn number
Function luhnNext(InVal As String)
Dim luhnCheckSumRes
luhnCheckSumRes = luhnCheckSum(InVal)
If (luhnCheckSumRes = 0) Then
luhnNext = 0
Else
luhnNext = ((10 luhnCheckSumRes))
End If
End Function

Логично предположить, что номер карты, и не только банковской, а например, топливной – это не совсем случайный набор цифр, что есть некая система.
Вот здесь об этом и рассказывается.
Если раньше об этом не знали и любопытно взглянуть – заходите.

Про структуру номера банковской карты и алгоритм Луна

Первая цифра в номере карты — это платежная система

1 Это различные авиакомпании
2 Тоже авиалинии, а также наша система МИР
3 American Express, Maestro
4 VISA
5 MasterCard, Maestro
6 China UnionPay
7 Топливные компании
8 Предприятия в сфере телекоммуникаций
9 Государственные структуры

То есть по этой первой цифре сразу не определить, к какой конкретной платежной системе относится карта.
Видимо, за исключением цифры 4 – везде упоминается под этим номером только VISA.

Посмотрел на свою дисконтную карту одной из топливных компаний – действительно, начинается на 7.

Цифры со 2 по 6 включительно — идентификатор эмитента карты

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

Цифры с 7 по 15 — идентификатор клиента

В этом идентификаторе зашит и банковский продукт, который соответствует данной карте — дебетовая и или кредитная, код валюты — и собственно индивидуальный номер данной конкретной карты.

16 цифра — контрольная, по алгоритму Луна

И последняя 16 цифра – это цифра для правильности всего комплекса цифр, образующих номер карточки, и эта цифра формируется алгоритмом Луна.
Алгоритм разработан сотрудником IBM Гансом Питером Луном, в 1954 году, запатентован в 1960.
Этот алгоритм не является шифровальным средством, используется только для проверки, правильно ли были указаны цифры номера банковской карты.
Например, вы делаете онлайн-платеж, вводите данные своей карты.
Первое, что наверняка сделает система проверки — это проверит по этому алгоритму, не сделали ли вы случайно ошибку при ручном наборе номера.

Алгоритм Луна — как это работает

Алгоритм Луна - как это работает

Набросал в Excel таблицу — надо же проверить на своей карте, как это работает, мало ли чего напишут.
Проверил — работает.
Пронумеруем по порядку 16 цифр карты
1 шаг.
Все цифры, стоящие на нечетных местах, т.е. 1,3,5, …15 , умножаем на 2
Все цифры, стоящие на четных местах, т.е. 2,4,6, …, 16, используем дальше как они есть.
Получили ряд из 16 новых цифр-чисел.
2 шаг.
Теперь все полученные числа нужно будет сложить, но сначала нужно сделать так, чтобы все числа в итоговом ряду были только однозначными.
Если какое-то произведение оказалось двузначным, то от него вычитаем 9.
Например, было 12, минус 9, запишем 3.
Или просто записываем это двузначное число как два однозначных. Например, вместо 12 просто запишем две цифры: 1 и 2. При итоговом суммировании это и будет та же цифра 3.
3 шаг.
Все полученные в результате преобразования однозначные числа складываются.
Полученная сумма обязательно должна делиться на 10 нацело.
В нашем примере эта сумма оказалась равна 80.
Если у вас не получилось сумма, которая ровно делится на 10, это не означает, что у вас неправильная карта.
Это означает, что вы где-то ошиблись в расчетах.
Кстати.
В оригинале описания алгоритма нумерация делается справа налево. И этот алгоритм применяется на практике не только для банковских карт с 16-значным номером, но и, например, для 8-значных номеров вагонов РЖД, для номеров сим-карт.

Никому не говорите номер свой карты

Обычно при совершении онлайн-платежей в СМС-ке одновременно с подтверждающим кодом автоматом приходит предупреждение, типа, никому не сообщайте этот код и номер карты, так как вокруг могут быть мошенники.
Сейчас многие банки обновили предупреждение — если раньше допускалась такая возможность, то сейчас об этом говорится прямо:
«Если у вас спрашивают код или номер карты — это мошенники!»

Бонус — номер вагона РЖД

Бонус - номер вагона РЖД

Алгоритм Луна используется в различных областях, где есть необходимость какой-либо нумерации.
Например, РЖД использует этот механизм для контроля нумерации вагонов.
То есть алгоритм. в принципе, может работать с последовательностями цифр различной длины.

А также в нумерации сим-карт

А также в нумерации сим-карт

Если вы посмотрите на номер своей сим-карты — он обязательно будет начинаться с 89.
В любой стране.

Понравилась статья? Поделить с друзьями:
  • Алгоритм копирования формулы в ms excel
  • Алгоритм создания электронных таблиц в excel
  • Алгоритм копирования текста word
  • Алгоритм создания шаблона в word
  • Алгоритм как создать таблицу в excel