Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Жуки в полоску

Rossomahaar

Хакер, номер #084, стр. 084-056-2


[код EAN-13]

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

Первые 2-3 цифры кода означают принадлежность к различным региональным отделениям EAN или принадлежность к печатной продукции. По ним можно определить, в какой стране изготовлен товар, помеченный этим штрих-кодом (для этого задействуй, к примеру, прогу EAN-13 CountryFinder). Далее 4-5 цифр означают код присвоенный изготовителю товара. Это по стандартам EAN, на деле многие страны, в том числе Россия присваивают производителям 7 цифр. Оставшиеся цифры присваиваются различным товарам данного производителя. Последняя цифра - контрольная, служит для проверки корректности считанного кода. Алгоритм вычисления контрольной цифры весьма прост:

1. Сложить цифры, стоящие на четных местах:

7+1+0+1+1+0=10

2. Полученную сумму умножить на 3:

10*3=30

3. Сложить цифры, стоящие на нечетных местах, без контрольной цифры:

9+7+6+9+0+0=31

4. Сложить числа, указанные в пунктах 2 и 3:

30+31=61

5. Возьмем остаток от деления на 10:

31%10=1

6. Из 10 вычесть полученное в пункте 5:

10-1=9 - контрольная цифра.

Как видишь, наш штрих-код правильный. Несовпадение контрольной цифры на штрихкоде товара, скорее всего, означает, что товар поддельный.

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

Каждая цифра, кроме самой первой, кодируется и в графическом виде представляется двумя черными полосками. Первая цифра не кодируется, а определяется в зависимости от того, какие кодировки используют следующие за ней шесть цифр. Код EAN-13 использует три вида кодировок: code A, code B, code C. Двоичный код code C получается в результате проведения операции логического отрицания code A, то есть NOT code A, а code B - это «обратный» code C. В двоичной системе цифры этих кодировок выглядят следующим образом:

Code A Code B Code C

0: 0001101 0100111 1110010

1: 0011001 0110011 1100110

2: 0010011 0011011 1101100

3: 0111101 0100001 1000010

4: 0100011 0011101 1011100

5: 0110001 0111001 1001110

6: 0101111 0000101 1010000

7: 0111011 0010001 1000100

8: 0110111 0001001 1001000

9: 0001011 0010111 1110100

Несложно догадаться, что единицы будут графически выглядеть на штрих-коде как закрашенные области кода, нули - как не закрашенные. Разделительные полосы по краям кода можно обозначить как 101, а посередине - как 01010. Правая часть кода (последние шесть цифр) EAN-13 всегда кодируется как code C. Цифры левой части кода могут кодироваться методами A и B в зависимости от первой цифры штрих-кода. Зависимость эту можно представить следующим образом:

Назад на стр. 084-056-1  Содержание  Вперед на стр. 084-056-3