數據的盡頭(中)

上文

「從這個1kb的壓縮包里,解壓出了14.37G。」

4.

尹嵐有點區分不了技術和魔法了。

在幾個分鐘之前她還是相信科學的,相信黑客技術總歸是有邊界的。她很清楚,跟電影里那些怪力亂神,幾分鐘攻陷一個安防系統還自帶進度條的玄幻黑客不同。真實世界裡哪有那麼簡單又酷炫的行當,往往都是趴在一個調試器上幾個小時苦思不得果。複雜又冗長的彙編函數和埠數據在屏幕上像是走馬燈一樣飄過,兩眼通紅的黑客們雙手在鍵盤上亂舞…

但今天這位null總像是在施展某種神跡。如果他能看到尹嵐從自家的房門走回來,那就意味著null已經可以隨隨便便的進出「監控設備」這樣一個封閉系統。入侵一個封閉系統的難度,就像是在一個焊死的鐵盒中取物一樣:幾乎是天方夜譚。

唯一的解釋就是這位null所掌握的技術已經遠遠超出了尹嵐所能理解的範疇。對她來說,妄圖理解null的能力,簡直就像是螻蟻去理解鯤鵬一樣幼稚。如果這仍能算作是黑客的話,至少也算是黑客世界裡的獨孤求敗了。

她晃了晃滑鼠,半秒之內電腦就恢復了正常的運作。在搜索引擎里,找不到這個人留下的半點痕迹。社交軟體里沒有這個人,各種BBS論壇還有貼吧里也不存在這個人。他的黑色頭像沒有任何特徵,也沒有其他人有過類似的經歷。這個人像是一個影子、一個符號。正如他的名字一樣……他不存在。

他是空白。

整整一個晚上,困惑在尹嵐腦海里揮之不去。

一夜未眠的尹嵐拎起電腦包,頂著自己的黑眼圈來到樓下。凌晨六點對於她來說本是一個不應存在的時間,但是好奇心驅使著她的生物鐘。

她忘了已經多久沒有這麼亢奮過了。

又是一個肅殺的北國冬天,只有薄霧籠罩的清晨和寂寞的街道。她用大衣把自己裹得死死的,恨不得整個人都縮進衣領里。

當她走進書店的那一刻,熱氣普遍而來。

書店不算狹小,卻因為四處堆砌的書堆而顯得擁搡,只夠剛好擺下一幅桌椅。

坐在幾排書架最遠處的男人穿著黑色的T恤,似乎和她並不在一個季節。男人的臉上沒什麼稜角,卻也並不消瘦,略微蓬亂的頭髮順著一邊自然的垂下來。他五指在桌面上輕輕敲點著,顯得有點悠閑。

男人說:「你花了二十一分鐘才走過來。」

聲音和樣貌一樣的年輕。

尹嵐的社交恐懼又從心底里湧出來,她躲到一角說:「你就是null?」

男人說:「是。」

尹嵐說:「你什麼時候入侵的我的筆記本?」

男人說:「我沒有入侵你的電腦。」

尹嵐說:「不可能…」

男人說:「這樣說可能你有點難以理解,但也只能這麼比喻。每個人的個人電腦都是一座封閉的、孤立的堡壘,雖然算不上無懈可擊,至少也是戒衛森嚴。但我沒有闖進那座城堡的大門…我是飛進去的。」

尹嵐說:「能說的簡單點么?」

男人說:「不能。」

男人站起身說:「這個問題你最後肯定會懂的。現在的要事是…你來到這裡肯定是想學點真東西的,對吧。」

尹嵐篤定地點點頭。

男人說:「那就好。自我介紹就免了吧,你叫尹嵐,21歲,是本地人。大學輟學之後…」

尹嵐連忙打斷說:「不要念了,怪尷尬的。你還沒介紹你自己呢。」

男人說:「我從法律角度來說算是一個不存在的人,按照公安部門的記錄和有關規定,我到現在還沒出生呢。」

還沒出生?什麼意思?

尹嵐徹底摸不著頭腦了,卻不想就此打住,她準備咬住這條線索一直問下去。

她說:「那你總要有個名字吧。」

男人說:「有一個常用的名字,是我曾經給自己起的。你把左手邊書架最上排靠牆第二本書拿下來,就能請清楚了。」

屋裡的暖氣烤的尹嵐微微出汗,她褪去外套,踮著腳尖勉強拿下了那本書。而在看到那本書的書名的瞬間,尹嵐嚇得差點戳到自己的眼睛。

她驚愕地喊著:「這本破書原來是你小子寫的!」

男人面無表情地說:「怎麼了?」

尹嵐說:「你自己寫了一本書叫《A4紙編程指南》?」

男人說:「對啊。」

一說到這裡尹嵐就怒火攻心,這本破書大寫特寫,闡述了腦內編程,A4紙調試。甚至考慮放棄一切計算機純粹腦洞代碼,這簡直就是誤人子弟!

根本沒有一個計算機工作者能脫離電腦工作,那簡直如同讓戰場部隊一律不得配槍一樣荒謬!尹嵐當初看到這本書的時候還以為是什麼笑話書,沒想到還真的煞有其事的介紹了紙上代碼的原理和架構,還花了十幾頁圖文闡述如何通過腦補來找bug。

一派胡言!

再看看這本書的作者唐覺,尹嵐就更是一窩火。明明自己寫了一本爛書還不自知,偏偏賣的那麼貴,一本就要價一百多塊大洋,《辭海》才幾個錢啊!

尹嵐一邊深呼吸努力調節自己的情緒一邊說:「你就是這爛書的作者唐覺?」

男人點點頭說:「是。」

尹嵐猛地一拍書架說:「好!你厲害!你不用電腦就能編程。你離了電腦你能幹那些最基礎的活兒不?你倒是告訴我『編程』這倆字的Base64【注1】編碼是多少?」

男人以飛快的語速說著:「JXU3RjE2JXU3QTBC」

5.

過了整整二十秒,尹嵐才緩過神來說:「你是瞎嘀咕的吧…你再重複一遍。」

男人說:「JXU3RjE2JXU3QTBC」

尹嵐抬抬手示意男人停下,她跑到男人的對面,把電腦咔地擺上桌子,噼啪地敲了片刻,猛然昂起頭說:「不可能!」

他說的毫釐不差,準確的像是原子鐘。

尹嵐感覺渾身都在發抖,這個男人竟然只在瞬息之間就完成了漢字base64編碼,這對一個普通人來說不亞於十五位乘除法的運算量。

他平靜地站在那裡,但在尹嵐眼裡卻像是一台轟鳴運轉的超級運算矩陣!

尹嵐說:「不應該的…你是用什麼方法訓練過自己的編碼能力么。我知道某些高智商人士用特殊方法,能記住成千上萬、錯綜複雜的二維碼。還有人能在分秒之間,盲眼還原散亂的魔方。如果你刻意訓練過自己這種…」

不對…這不一樣。Base64編碼只不過是尹嵐隨意問出的一個難題而已,對於面前這個男人來說不可能早有預料。

她說:「唐覺,你知道3的26次方…」

男人機械而規律地說著:「2541865828329」

尹嵐徹底無話可說了,這怎麼可能是黑客世界裡的獨孤求敗,這簡直是元始天尊。

男人說:「你關於我的好奇我會慢慢告訴你的,但在那之前,你必須學習,極度刻苦的學習。直到你有資格面對接下來的那場浩劫。」

尹嵐望著這個神情寡淡的男人,第一次產生了敬畏感。從第一條微信開始,到現在的顱內編程,唐覺就像是站在整個計算機世界之外的俯瞰者。在尹嵐還在為塵埃而紛擾不休的時候,他已經懷抱了整個星辰。

尹嵐根本不是在攀登高峰,她是在追逐銀河。

她心悅誠服地點頭說:「請…請…請教會我。」

她第一次由衷地想要拜一個人為師。

唐覺點點頭,從口袋裡掏出一張照片說:「把他們復原。」

尹嵐說:「復原什麼?」

唐覺說:「整個書店。我按照某種規律弄亂了所有書籍的順序,在今天早上十點開業之前,你幫我復原整個書店。這張照片是第一個書架的原貌,它會成為你的參照物。」

尹嵐抬起頭遙望了一下幾大排塞得滿滿的書架,像是大型貨輪上排布成山一樣的集裝箱,不由感到一股沉重的壓力。

唐覺說:「對了,還有一個附加題。我給你的電腦里發了一個1kb的壓縮包,你現在開始解壓。你一邊整理,一邊估算這個壓縮包原本的大小。」

尹嵐說:「可是他只有1kb,不是一瞬間就結束了解壓么…」

唐覺沒有回答。

尹嵐的工作困難的像是在一個偌大的沙盤上復原每一粒沙子,而她更無法想到的是,從這個1kb的壓縮包里,解壓出了14.37G。

6.

待續

明晚九點準時更新下

更新會同步於我的專欄:知乎專欄

謝謝你們。

下文點這裡

【注1】:一種互聯網常用的編碼演算法。

【增訂】:這部分內容建議非計算機專業讀者跳過,有興趣的可以選擇閱讀。

Base64是一種不能直接對漢語使用的編碼,所以需要第二個編碼表作為「跳板」,將漢字率先轉化為其他字元。因此說「某個漢字的base64編碼」是不嚴謹的,在不同碼錶之下的結果也是全然不同的。(在PHP中,源文件的編碼格式則會決定「跳板」的格式。)

關於文中的唐覺口算Base64,由於這裡的漢字轉Base64是我大一時手敲的(倒是沒有大的bug),中途使用的是js自帶的escape() 編碼。它產生的Unicode編碼是 %u7F16%u7A0B ,這一編碼再經過Base64編碼,就是文中的JXU3RjE2JXU3QTBC。

但實際上escape() 函數的編碼方式已經被逐漸廢棄(而且這樣產生漢字Base64也是不規範的)。

正確方式應當是使用utf-8編碼的十六進位表達(如『編』字為 E7BC96)直接作為二進位串進行編碼,然後對應Base64碼錶的字元。這也是PHP自帶的 base64_encode 函數的操作方式。按照這一方式得出的「編程」二字的Base64編碼,則是 57yW56iL(精湛了許多)。

鑒於種種原因不對文中代碼進行更改,大家姑且就當做這個架空世界裡面計算機科學已經畸形發展,連正確的編碼方式都沒有想到過吧…

鞠躬致歉。

推薦閱讀:

「 職場故事 」辭或者不辭 該如何抉擇?

TAG:故事 | 小说 | 生活 |