ARTICLE 1
03.10.2000
The Bar Codes
This is my article about what the bar code really is, how it is calulated and what it hides, so ingeniously...
First, please review (Mathew, 27, 6-10), (John 3,20), (Mat 16,18),(Facts 26,14), (Mat 27,6-10) etc. Finally, (Apoc. 13,16-17).
Okey... There are two main types of bar codes, the UPC (Universal Product Code) system and the EAN-13. Differencies are very insignificant and they both have a main problem. I will describe here the EAN-13 (European Article Numbering), the one you can find on food, on T-shirts, and on anything you want to buy.
The numbers are represented by vertical lines and bars, with variable width, either black (which you easely see) or white (some of them you don't, like those at the margins).
Those codes are said to make the work much easier, as there are used optical detectors to read the numbers. Each number is generated function of a product code (for example, let's say 20 for Metro chocolate).
Every number has exactly 13 ciphers (0-9). The firs cipher of the 13 is always written separately, like an Arab letter, in the left of the bar code. The other 12 are split into two groups of 6 and they are written, one to the left, one to the right, composing this way the bar code. The first 7 ciphers represent the country of provenience and the producer of the product (elements 2,3 and respectively 5,4). The remaining 5 ciphers represent the type of the product. The last cipher is the control cipher, with which the computer checks if the reading of the code was ok (simillary to a CRC, on the cryptographyc systems).
The two parts of the 12 ciphers are separated using auxiliary characters, black-white, one to the left, one exactly in the middle and one at the end of the code. We shall deal with those tricky ones later:)...
Okay.. each cipher is represented in a unique combination of intervals, black lines and white lines, with variable width each of them. The width of that crap is composed from 7 printing units, called modules. Each of the module is equal to 0.3 mm . Each cipher has a total length of 0.33 x 7 = 2.31 mm . It is allowed to zoom a little the entire system, but if you zoom it out, it is not allowed for a module to have less then 0.23 mm.
Let's take an example:
Cipher 0 from set A is represented like this: 3 white units, 2 black units, 1 white, 1 black. That means a length of 7 units.
Cipher 2 from set A is: 2W,1B,2W,2B.
So..:
Set A:
0 = 0001101
2 = 0010011
Set C:
0 = 1110010
2 = 1101100
Notice that those are different for different series (yes, i like cryptanalysys). With a few critic spirit, you may and now you surely do notice that 0 in A is the reversed in C, and 2 the same. So A0= (NON)C0. That means where we had black, we put white.
Set A and B are used to encode the left part of the 12 splitted ciphers (so left array) and C for the right array. We saw up there how the set A and C are used to encode numbers. The middle set, B, encodes ciphers exactly mirroring the set C. Here is an example:
cipher 6:
in set A = 6A = 0101111
în set B = 6B = 0000101
în set C = 6C = 1010000
cipher 0:
in set A = 0A = 0001101
in set B = 0B = 0100111
in set C = 0C = 1110010
Every light length mean 0, and the black ones mean 1.
Notice, if you calculate ciphers in sets A,B and C that in A and B they are not divisible with 2 (the last binary cipher, from the right is 1). Set C only contains ciphers divisible with 2. So, generally, that means that the left array contains only ciphers not divisible with 2, and the right array which are divisible with 2.
Each number is composed from two alternaces of white and two of black, and each alternance has a variable length, depending of how many modules it contains.
Auxiliary Characters
Untill now, all the ciphers were depending on the product, producers, etc, so they were variable. But there are also some fixed characters, used for control (really??).They are so called "gard bars". They are longer then the fixed ones, and they go down a little more. Those are the 3 characters and now we are dealing with them.
Let's see what they look after some cryptanalysys:
at left: 101
at middle: 01010
at right: 101
In reality (!!!), they look like this:
at left: 0101
at middle: 01010
at right: 1010
I know you are confused. I will explain here why is that so. Look.The first white line, from the left, and the last white line, from the right, are being in the first analysys confused with the white margins of the code, which are also part of the representation. Because of that, the zone is called "the quiet zone" (!!). The white margins are part of EAN-13 and also UPC, and they must have a length of at least 10 modules (that is the prove, for EAN-13. But UPC also says something about them, i am pretty sure).
Another prove is that the producers recommend the white margins to be very clean (so they ARE important) and they say not to stick the bar code labels on the margins of the product (so the length is respected).
Now, lets use some brain. The label can be read from right to the left or inverse. Now go and see the left and the right auxiliary characters. See how they are the same if they are read in reverse order? Ha! And ok,
another tip is that if the scanner can't find a zero 0 as the first cipher it reads, it simply cannot read the code. So the margins are part of the code.
Okey.. The middle bar is the mixation of the left and the right one. See left 0101 and right 1010 give in the middle 01010, so no matter if you read it from left or right, it means the same thing. And the rule applies, see, it always starts with a zero (white line), no matter how you read it.
Hmm... but what a hack.. Do these numbers mean something? Hmm.. Let's see what they mean...
The cipher has 4 alternances of white black, 2 of black and 2 of white.
Another characteristic is that the left cipher is the mirror of the right one.
The left representation of it is not divisible with 2, while the right one is, so in a word it has the entire characteristics of encodement of the code bar (the variable ciphers), so we conclude it represents a number, isn't it? That's what EAN-13 means, a way to represent numbers through bar lines.
What we have to do is to do an exhaustive search, so that means to check all the 0-9 ciphers to see which of them, and how many fit to those characteristics. Ha... After a long period of time, we can see the only cipher which matches all the tests is number...6. So we have a 6 for each gard bar. Hmm.... Let me think.... 6,6,6... what can it be? 666!!!!!!
I must tell you something. If the guys who designed this stuff wouldn't have used more then one set of linear encodement, like A,B and C, there wouldn't have been the need of 3 gard bars, so no 666. Of course if you use at least 2 sets of linear encodement you must be able to determine which lines are in which set, it is trivial. But ... why? Look, for only a set of ciphers, let's say, logically, A, it is true that one have to use the left and the right gard bars, to be able to scan the bar code correctly. But the middle one wouldn't be necessary. So, there would have been only two of 6. But here, with 3 sets, both in UPC and EAN-13, you need exactly three gard bars. And, by the way, there is no other possibility to express the cipher 6 using this type of encodement. So what that means is that those 3 ciphers of 6 are in an unbreakable unity, they determine each of one separately. They are 666.