Контрольная сумма представляет собой вычисляемое значение, добавляемое к последовательности данных для проверки её целостности и корректности. Валидация на основе контрольных сумм применяется в финансовых системах, идентификаторах документов, товарных кодах и сетевых протоколах. В библиотеке Validator.js реализован набор алгоритмов, позволяющих проверять распространённые форматы идентификаторов, использующих контрольные суммы.
Контрольная сумма формируется на основе набора символов исходного идентификатора с применением математического алгоритма. Основная задача — обнаружение ошибок ввода и передачи данных.
Типовые задачи, решаемые контрольными суммами:
Наиболее распространённые алгоритмы:
Алгоритм Луна применяется для проверки номеров банковских карт и ряда идентификаторов платёжных систем. Validator.js реализует эту проверку через функцию:
validator.isCreditCard(value)
Алгоритм работает следующим образом:
Пример использования:
validator.isCreditCard('4111111111111111'); // true
validator.isCreditCard('1234567890123456'); // false
Поддерживаются основные платёжные системы: Visa, MasterCard, American Express, Discover, JCB.
IBAN (International Bank Account Number) используется для международной идентификации банковских счетов. В Validator.js применяется функция:
validator.isIBAN(value)
Алгоритм проверки основан на стандарте ISO 13616:
Пример:
validator.isIBAN('GB82WEST12345698765432'); // true
validator.isIBAN('DE89370400440532013000'); // true
IBAN строго зависит от страны, поэтому Validator.js учитывает локальные форматы длины и структуры.
ISBN используется для уникальной идентификации книг и изданий. Поддерживаются два формата:
Функция Validator.js:
validator.isISBN(value, version)
Использует модуль 11:
Основан на модифицированном алгоритме EAN:
Примеры:
validator.isISBN('3-16-148410-X', 10); // true
validator.isISBN('9783161484100', 13); // true
ISIN (International Securities Identification Number) применяется для идентификации финансовых инструментов.
Проверка:
validator.isISIN(value)
Структура ISIN:
Алгоритм включает преобразование букв в числа и применение Luhn-подобной схемы.
Пример:
validator.isISIN('US0378331005'); // true
IMEI (International Mobile Equipment Identity) используется для уникальной идентификации мобильных устройств.
Проверка:
validator.isIMEI(value)
Алгоритм основан на Luhn, но применяется к 15-значному числу.
Пример:
validator.isIMEI('356938035643809'); // true
IMEI содержит TAC (код типа устройства), серийный номер и контрольную цифру.
VAT (Value Added Tax Identification Number) используется для налоговой идентификации в странах ЕС.
Функция:
validator.isVAT(value, countryCode)
Особенности:
Пример:
validator.isVAT('DE123456789', 'DE'); // true
Validator.js унифицирует работу с различными алгоритмами через единый подход:
Общая архитектура позволяет использовать одинаковый интерфейс для разных типов данных:
Валидация контрольных сумм применяется на разных уровнях:
| Тип идентификатора | Алгоритм | Особенности |
|---|---|---|
| Банковские карты | Luhn | Простота, устойчивость к одиночным ошибкам |
| IBAN | ISO 7064 | Высокая строгость, международный стандарт |
| ISBN | Mod 11 / Mod 10 | Исторически разнородная система |
| ISIN | Luhn-подобный | Финансовая сфера |
| IMEI | Luhn | Аппаратная идентификация |
Контрольные суммы в Validator.js образуют отдельный слой валидации, ориентированный на структурную проверку идентификаторов. Их использование позволяет стандартизировать обработку распространённых форматов данных и снизить вероятность ошибок при работе с критически важной информацией.