吳俊杰
之前我們通過探究條形碼的規(guī)律,得出了一些規(guī)律,即用等間距的黑色線條1表示黑色,0表示白色。接下來我們就對(duì)所有的code39型條形碼進(jìn)行完全解密。
● 條形碼的解密
通過亮度解析的程序,我們可以將條形碼生成器生成的單一字符0~9用下頁表1表示出來,為了明確每個(gè)數(shù)字和字母的位置,我們給每一個(gè)字元都規(guī)定了一個(gè)編號(hào)。
表1 ?數(shù)字0~9的39碼編碼對(duì)映表
編號(hào) 字元 邏輯型態(tài)
0 0 101001101101
1 1 110100101011
2 2 101100101011
3 3 110110010101
4 4 101001101011
5 5 110100110101
6 6 101100110101
7 7 101001011011
8 8 110100101101
9 9 101100101101
同理,我們可以找到字元A~Z以及一些特殊符號(hào)的邏輯形態(tài),并且繼續(xù)之前數(shù)字編號(hào)的順序給他們一個(gè)唯一的編號(hào),如表所示1。
我們可以看出所有字母的邏輯形態(tài)的兩邊都是1,這保證了兩邊都有一段黑色,保證了條碼長(zhǎng)度的穩(wěn)定。而且在形如下圖的條碼的兩端都有一個(gè)*字符的條碼,確定了條形碼的有效信息的范圍。
至此,我們就像掌握了一種英文的書寫方式一樣,甚至可以用條形碼的方式寫一首密碼的小詩,通過簡(jiǎn)單的Scratch程序,我們就可以將英文翻譯成條形碼表示出來。
● 條形碼的安全校驗(yàn)
為了讓條形碼的解碼過程更加準(zhǔn)確,code39型條形碼的設(shè)計(jì)者,設(shè)計(jì)了解碼校驗(yàn)的功能,事實(shí)上校驗(yàn)的思想在所有的信息傳遞的過程中都普遍存在,就像你聽不清別人的話或者覺得聽到的東西明顯不合邏輯會(huì)問一句“你說的是什么”一樣,條形碼的校驗(yàn)也是起到這個(gè)作用。code39碼可以根據(jù)需要傳遞的信息生成一個(gè)檢查碼,它的計(jì)算方法是,搭配表2可以找到每個(gè)字元的編號(hào),將查出的編號(hào)累加后再除以43,得到的余數(shù)再查出相對(duì)的編碼字元,即為檢查碼字元。
例如,要算出*S123$5*這筆資料的檢查碼,其計(jì)算過程如下:①參考檢查碼相對(duì)值對(duì)照表,找出編碼字元編號(hào)。其中,S的相對(duì)值為28;1的相對(duì)值為1;2的相對(duì)值為2;3的相對(duì)值為3;$的相對(duì)值為39;5的相對(duì)值為5。②將各相對(duì)值累加除以43,累加相對(duì)值=28+1+2+3+39+5=78可以得出78÷43=1余35。③查出與余數(shù)相對(duì)的編碼字元。余數(shù)=35,查表1和表2,得到相對(duì)值=35之編碼字元為Z,故檢查碼=Z,得含檢查碼在內(nèi)的39碼,為*S123$5Z*。
通過安全校驗(yàn),如果條形碼解碼的結(jié)果和安全校驗(yàn)碼不符,則可以判斷解碼失敗,就像我們?cè)诔匈徫飼r(shí),常常遇到的掃不出條碼的情況一樣,保證了信息傳遞過程中的安全性。校驗(yàn)的步驟是發(fā)生在通信過程中的一個(gè)普遍的過程,如最常見的奇偶校驗(yàn)等,在進(jìn)一步的深入了解中我們會(huì)更加深入地體會(huì)到校驗(yàn)的重要性。