銀行卡為何要使用ISO8583格式

一直對(duì)這個(gè)數(shù)據(jù)格式?jīng)]有好感,因?yàn)樗龑?dǎo)人們把名稱簡化為無意義的編號(hào),增加記憶和理解的成本。

周星馳的《唐伯虎點(diǎn)秋香》中,唐伯虎進(jìn)入華府做家丁,被編號(hào)為9527,一個(gè)家丁沒有資格被呼作姓名,就算是唐伯虎。

曾幾何時(shí),高速公路的路牌是各種的名字:機(jī)場高速,京珠高速。。。。后來被取締為s21,g20,讓人十分無語。

最近,我聽得最多的就是49域上送的不對(duì),32域校驗(yàn)不對(duì)之類的。當(dāng)時(shí)我的心真的有點(diǎn)捉狂,使得我一度很惡趣味的猜測,這玩意除了給初學(xué)者增加學(xué)習(xí)的成本,形成一種就業(yè)壁壘外,還能有啥好處?畢竟這是ibm年代的產(chǎn)物,大型機(jī)的技術(shù)封閉使得技術(shù)人員非常稀罕。


用最簡單的話語介紹一下iso8583格式的協(xié)議:

iso是一個(gè)國際規(guī)范組織,這個(gè)8583規(guī)范是定義關(guān)于銀行卡的數(shù)據(jù)傳輸格式,我們?nèi)粘J褂玫腶tm,pos在進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,就使用iso8583協(xié)議。

從技術(shù)層面看,iso8583格式報(bào)文(下稱8583包)如下組成:

mti(4b)+位圖(1-3B)+數(shù)據(jù)


既然這個(gè)格式是銀行卡的數(shù)據(jù)傳輸格式,我們來看看從atm取錢的流程

1.插卡,輸入密碼

2.點(diǎn)擊取錢,輸入金額

3.吐錢,退卡

這里每個(gè)步驟,其實(shí)都由atm機(jī)器和銀行系統(tǒng)進(jìn)行了多次的數(shù)據(jù)傳輸。同時(shí),傳輸?shù)臄?shù)據(jù)有以下的要求:

1.要以二進(jìn)制的形式通過廣域網(wǎng)傳輸

2.數(shù)據(jù)要安全

3.數(shù)據(jù)的高效率

由于第1點(diǎn),我們需要使用一個(gè)約定的格式來實(shí)現(xiàn)銀行卡的數(shù)據(jù)與二進(jìn)制數(shù)據(jù)的轉(zhuǎn)換,這個(gè)過程叫序列化和反序列化

而目前國際上,包括國內(nèi),都適用了iso8583協(xié)議作為傳輸?shù)耐ㄓ酶袷健?/p>


8583安全嗎?

我曾經(jīng)以為使用8583是為了安全,然而并不是這樣,我們可以隨意的下載到這個(gè)8583規(guī)范,拿到數(shù)據(jù)包即可根據(jù)規(guī)范文檔對(duì)其中的數(shù)據(jù)進(jìn)行查看。當(dāng)然,銀行卡數(shù)據(jù)的安全是由其他手段保證,這里不展開。


iso8583包的數(shù)據(jù)處理效率高?

這個(gè)問題我思考了一段時(shí)間了,但如果8583包的處理效率高,為何現(xiàn)在沒有在其他領(lǐng)域推廣?

沒有看到哪個(gè)序列化是參考了8583的思想所以很快的啊?

決定序列化處理的效率,一般是由下面兩個(gè)重要因素決定:

1.轉(zhuǎn)換后二進(jìn)制數(shù)據(jù)的大小,越小越好

2.轉(zhuǎn)換的速度,越快越好

一次數(shù)據(jù)的轉(zhuǎn)換,一般需要如下的元素:

1.轉(zhuǎn)換的schema:包含了每個(gè)數(shù)據(jù)的含義,長度和類型,有了schema才可以解開數(shù)據(jù)包。而schema應(yīng)該是雙方約定好的,在各自的本地保存,不需要在傳輸?shù)臄?shù)據(jù)包中帶上,以減少傳輸數(shù)據(jù)的大小。

2.數(shù)據(jù)位的對(duì)照:代表這次攜帶了多少數(shù)據(jù)。假設(shè)schema定義了128個(gè)字段,但是一次傳輸不一定會(huì)帶上128個(gè)字段,因此需要指定這次攜帶了多少個(gè)字段,以及這些字段如何和schema對(duì)應(yīng)起來。

3.數(shù)據(jù)有哪些:就是數(shù)據(jù)本身,可以是任何的數(shù)據(jù)


iso8583和業(yè)界常用序列化的對(duì)比


1.schema是否在數(shù)據(jù)包中帶入:

8583、fastjson、protobuf和java原生序列化,都不在數(shù)據(jù)中帶入schema,此項(xiàng)打平

2.8583包采用位圖(bitmap)的形式來實(shí)現(xiàn)數(shù)據(jù)位的對(duì)照,一個(gè)字節(jié)可以表示64個(gè)字段是否存在。一般用2-3個(gè)字節(jié)就可以表示數(shù)據(jù)位的對(duì)照。

fastjson屬于json格式,使用[]{}:進(jìn)行數(shù)據(jù)位的匹配,再由字段名進(jìn)行數(shù)據(jù)位的對(duì)照,例如name這個(gè)字段,必須占用4個(gè)字符。

xml序列化,使用<>進(jìn)行數(shù)據(jù)位的匹配,再由字段名進(jìn)行數(shù)據(jù)位的對(duì)照,和json格式差不多,但是對(duì)照的字段名一般長度是json的兩倍(因?yàn)?lt;name></name>,name一般出現(xiàn)2次)。

其他序列化也需要用字段名來實(shí)現(xiàn)對(duì)照。

因此這里8583以2-3個(gè)字節(jié)實(shí)現(xiàn)所有字段與schema的對(duì)照,在大小方面有強(qiáng)大的優(yōu)勢。

3.數(shù)據(jù)存在可以壓縮的可能,壓縮雖然可以減少數(shù)據(jù)的大小,但是會(huì)增加轉(zhuǎn)換過程的時(shí)間。此處沒有強(qiáng)制要求,打平


可以承認(rèn),8583使用的位圖對(duì)照策略是一個(gè)優(yōu)秀的設(shè)計(jì),但是它沒有被大量使用,莫非因?yàn)樗芯窒扌裕看鸢负糁觯?br>

是的,就是因?yàn)榫窒扌浴?/p>

銀行卡數(shù)據(jù)基本都是一層的結(jié)構(gòu),1-128個(gè)字段,字段里面很少再有嵌套。

而真實(shí)世界里面,很多數(shù)據(jù)結(jié)構(gòu)就是多層嵌套的,一個(gè)列表中某個(gè)元素是哈希表,哈希表中某個(gè)元素又可能是列表,這樣的情況,用一個(gè)簡單的位圖,是無法實(shí)現(xiàn)數(shù)據(jù)的對(duì)照的。


結(jié)論

在種種歷史原因,或規(guī)范的約束下,銀行卡用了iso8583作為傳輸?shù)臄?shù)據(jù)格式。

而從技術(shù)來看,由于銀行卡數(shù)據(jù)只有一層結(jié)構(gòu),使其可以使用位圖來實(shí)現(xiàn)數(shù)據(jù)的對(duì)照,從而減少數(shù)據(jù)的傳輸量。

但偏偏正是位圖的引入,使得銀行屆普遍喜愛所用xx域,yy域來表示一個(gè)字段的含義。

9527沒有資格讓人們記住他的名字,特工也喜歡用007代替自己的真名。

作為一個(gè)oo(面向?qū)ο螅┑闹С终撸娴南M?1域作為流水號(hào)能重見天日,然而這是一個(gè)習(xí)慣問題,而非技術(shù)問題,本人深感無力。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,778評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,795評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,993評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,229評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,687評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,990評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容