如何給你的文件設(shè)定獨(dú)一無二的編號(hào)?

你去上學(xué)类缤,班主任會(huì)告訴你一個(gè)學(xué)號(hào)不撑;畢業(yè)后上班文兢,HR會(huì)給你一個(gè)工號(hào);你回家焕檬,抬頭看得到門牌姆坚;你去桑拿,前臺(tái)會(huì)給你一塊手牌实愚;

站在管理者的角度看兼呵,為了把一攤事管得有秩序,就得排序腊敲。這樣協(xié)作系統(tǒng)能定位目標(biāo)击喂,更好地服務(wù)。否則碰辅,課程沒法排懂昂,工資沒法算,快遞員找不到你家没宾,甚至在你洗完澡結(jié)賬時(shí)都會(huì)糾結(jié)半天凌彬,因?yàn)榍芭_(tái)搞不清你到底吃了多少果盤潮尝。

編號(hào),要解決兩個(gè)問題:

1)能定位饿序;

2)無重號(hào)。

小規(guī)模編號(hào)羹蚣,比如班級(jí)學(xué)號(hào)原探,從1、2顽素、3……開始咽弦,就能解決問題;中等規(guī)模的如大企業(yè)工號(hào)胁出,數(shù)字前面得加個(gè)字母:A120908型型;大規(guī)模編號(hào)如身份證系統(tǒng),別管誰進(jìn)來全蝶,統(tǒng)一18位數(shù)字標(biāo)簽貼在你的身份證上闹蒜。

但,如果是給互聯(lián)網(wǎng)里的所有文件編號(hào)抑淫,標(biāo)簽應(yīng)該如何貼呢绷落?那可是星辰大海呀,如果按老辦法排序始苇,那得到千年后才能給你現(xiàn)在看的這篇文章編上號(hào)砌烁。而且遇到重號(hào)問題如何解決?是否專門安排公務(wù)員管這攤事催式?

那有沒有效率更高的編號(hào)方法函喉?有,答案是哈希算法荣月。

1管呵、什么是哈希算法?

哈希算法是將文件映射為較短的固定長(zhǎng)度字符串(哈希值)喉童∑材——維基百科

任何計(jì)算機(jī)文件都由電子訊號(hào)組成。簡(jiǎn)單地說:0和1組成了全部的信息世界堂氯,即:比特世界蔑担。

比如,我們眼中的香腸圖片咽白,在比特世界里是這樣的:01010111001111010101100101110101……

我沒寫完整啤握,上萬位吧,寫完得一屋子晶框,總之就是0和1兩個(gè)數(shù)字排成了一條長(zhǎng)龍排抬,這才是這張圖片在比特世界里的本來面目懂从,我們把這串長(zhǎng)龍稱為“二進(jìn)制文件”。

我們把這條長(zhǎng)龍切碎蹲蒲,攪拌之后就得到哈希值:4f7f56ecc0b725893b59f6428258304a94e40f48

哈希值是哈希算法的最終結(jié)果番甩,是文件在互聯(lián)網(wǎng)里的編號(hào)。如果這張圖片是一個(gè)人届搁,那哈希值就是TA的指紋缘薛、TA的身份證編號(hào)。

你完全不用理解哈希算法如何把二進(jìn)制文件變成哈希值卡睦,這是數(shù)學(xué)家的事宴胧,你只要把哈希函數(shù)看作一臺(tái)屠宰機(jī)器,就能理解一切:這臺(tái)機(jī)器把任何豬都能剁成等長(zhǎng)的香腸表锻,而哈希值就是這根香腸的花紋恕齐。

除了所有哈希值都一樣長(zhǎng)之外,這些花紋有一些其他漂亮的特性瞬逊,能輕巧地用在比特世界的方方面面显歧。

2、哈希值的特性

如果你看到兩個(gè)文件有完全相同的哈希值确镊,那你立馬可以判定它們是同一文件追迟。這也是哈希值最基本的特性:相同文件的哈希值相同,即骚腥,復(fù)制后的文件與原文件哈希值相同敦间。

這容易理解,因?yàn)榧热皇莾芍灰荒R粯拥呢i束铭,那它們用相同方法做出來的香腸應(yīng)該一模一樣廓块。但如果兩只豬其他部位完全相同,哪怕它們尾巴尖上的一根毛不同契沫,那香腸最終的紋理會(huì)完全不同带猴。

源文件稍有改動(dòng),哈希值面目全非懈万。

這一特性使得用哈希值標(biāo)注的文件無法被篡改拴清,因?yàn)槟呐轮淮鄹纳蠄D一個(gè)像素,馬上就能被認(rèn)出——哈希值會(huì)完全不同会通。

另外口予,哈希值還有的特性:

第一、不可逆推:在具備編碼功能的同時(shí)涕侈,哈希算法也作為一種加密算法存在沪停。即,你無法通過分析哈希值計(jì)算出源文件的樣子,換句話說:你不可能通過觀察香腸的紋理推測(cè)出豬原來的樣子木张。

第二众辨、計(jì)算極快:哈希一部20G高清電影和一個(gè)5K文本文件復(fù)雜度相同,計(jì)算量都極小舷礼,可以在0.1秒內(nèi)得出結(jié)果鹃彻。也就是說,不管豬有多肥妻献,骨頭多硬浮声,做成香腸都只要眨眨眼的時(shí)間,

能用極快的速度給你的文件編出不重復(fù)的號(hào)碼旋奢,而且任何人都無法通過這個(gè)號(hào)碼推算出文件原來的樣子,這就是哈希算法的意義然痊。

把文件切碎和攪拌的過程就是哈希算法至朗,而切碎和攪拌的動(dòng)作,稱為加密和壓縮剧浸,而不同的燒菜師傅會(huì)有不同的刀法锹引,于是就有了很多哈希算法,比如:CRC-32唆香、MD5和SHA1……名字雖然唬人嫌变,可它們之間只是張家?guī)煾岛屠罴規(guī)煾档膮^(qū)別,但不同師傅之間的刀功卻有高下躬它,那差距究竟在哪里呢腾啥?

3、什么是好的哈希算法冯吓?

正如前文維基百科的定義:哈希算法只是將文件映射為哈希值倘待,“映射”的意思是投影。既然是投影组贺,那總會(huì)不同的人有一模一樣的影子凸舵。所以最終在數(shù)學(xué)意義上,哈希會(huì)發(fā)生重號(hào)失尖,只是重號(hào)概率小到我們難以理解地接近零啊奄。

這種無限接近零的概率類似于:明天一早你突然當(dāng)選美國(guó)總統(tǒng)、你從小到大每天都中六合彩掀潮,或者下一秒49個(gè)外星人在你面前排成7×7方陣……的概率菇夸。但萬一碰到了呢?我們把這種情況稱為碰撞仪吧。

越好的哈希算法發(fā)生碰撞的概率越小峻仇。

可如果只為完成“少發(fā)生碰撞”這一個(gè)目標(biāo),很容易實(shí)現(xiàn)邑商,你只要把哈希值弄得長(zhǎng)長(zhǎng)的就可以了摄咆。但哈希值最終不是純數(shù)字編號(hào)凡蚜,而是數(shù)字與字母的組合,目的也只有一個(gè):縮短哈希值長(zhǎng)度吭从,便于實(shí)際應(yīng)用朝蜘。畢竟,沒有人會(huì)帶一根1米的香腸出差涩金。

如果你要自建一個(gè)小型圖片網(wǎng)站谱醇,使用CRC-32短哈希算法給圖片貼標(biāo)簽就足夠了,它能為你提供42億種不同的標(biāo)簽步做,而且文件名長(zhǎng)度(哈希值)永遠(yuǎn)只有8位副渴。

如果你要檢索論文庫(kù),MD5算法足夠你用:哈希值稍長(zhǎng)全度,但幾乎不會(huì)有重復(fù)煮剧,能讓你做出足夠精準(zhǔn)的索引。

而商業(yè)級(jí)加密将鸵,你可以用SHA256:哈希值稍長(zhǎng)勉盅,但倒推難度極大:需要人類當(dāng)前所有計(jì)算能力總和的千萬倍……還不一定能算出來。

所以顶掉,無論是CRC-32草娜、MD5、SHA256……并沒有絕對(duì)最好的哈希算法痒筒。只有在不同場(chǎng)景下宰闰,衡量成本收益之后,才存在相對(duì)最優(yōu)簿透。

結(jié)語

二十年前议蟆,如果你去圖書館找一本名叫《美國(guó)種族簡(jiǎn)史》的書,得先思考它屬于宗教類還是歷史類萎战,然后再跑去不同的區(qū)域爬格子咐容。而現(xiàn)在,你只需輕輕一點(diǎn)蚂维,整個(gè)屏幕就會(huì)告訴你有沒有這本書戳粒,如果有,那它在哪里虫啥。

圖書館用的小規(guī)模搜索技術(shù)貼標(biāo)簽:以前是手工分類蔚约,現(xiàn)在是數(shù)據(jù)庫(kù)。

而互聯(lián)網(wǎng)級(jí)別的大規(guī)模的搜索就得靠哈希算法生產(chǎn)索引標(biāo)簽了涂籽。比如Google等搜索引擎苹祟、迅雷等下載軟件、比特幣等加密貨幣……都能通過哈希值準(zhǔn)確定位目標(biāo)。

即使哈希算法乍看起來毫不起眼树枫,無非做出了一串奇怪的字符直焙,但它卻是比特世界里的板磚,能搭出高樓大廈砂轻,能讓比特世界更有序奔誓。即使離你再遠(yuǎn)的信息,在哈希算法的幫助下搔涝,都可以讓你觸手可及厨喂。

附:從今天起,你可以自己哈献剩——哈希工具

1蜕煌、哈希文件:http://www.atool.org/file_hash.php

哈希了前文香腸圖片,請(qǐng)注意最下方的“4f7f”開頭的哈希值即為前文哈希值诬留。

2斜纪、哈希字符:http://www.kjson.com/encrypt/hash/?fm=map

字符“Hello”用SHA256哈希算法得出的哈希值為:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

恭喜你,今天又在數(shù)字世界里精進(jìn)了一步故响。

本文于2017年10月22日發(fā)布于微信公眾號(hào): 概念地圖 gainianditu


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颁独,隨后出現(xiàn)的幾起案子彩届,更是在濱河造成了極大的恐慌,老刑警劉巖誓酒,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樟蠕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡靠柑,警方通過查閱死者的電腦和手機(jī)寨辩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歼冰,“玉大人靡狞,你說我怎么就攤上這事「舻眨” “怎么了甸怕?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腮恩。 經(jīng)常有香客問我梢杭,道長(zhǎng),這世上最難降的妖魔是什么秸滴? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任武契,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咒唆。我一直安慰自己届垫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布钧排。 她就那樣靜靜地躺著敦腔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恨溜。 梳的紋絲不亂的頭發(fā)上符衔,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音糟袁,去河邊找鬼判族。 笑死,一個(gè)胖子當(dāng)著我的面吹牛项戴,可吹牛的內(nèi)容都是我干的形帮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼周叮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辩撑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仿耽,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤合冀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后项贺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體君躺,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年开缎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棕叫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奕删,死狀恐怖俺泣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情完残,我是刑警寧澤砌滞,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站坏怪,受9級(jí)特大地震影響贝润,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铝宵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一打掘、第九天 我趴在偏房一處隱蔽的房頂上張望华畏。 院中可真熱鬧,春花似錦尊蚁、人聲如沸亡笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仑乌。三九已至,卻和暖如春琴锭,著一層夾襖步出監(jiān)牢的瞬間晰甚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工决帖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厕九,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓地回,卻偏偏與公主長(zhǎng)得像扁远,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刻像,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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

  • 所有貨幣都需要一些方法來控制供應(yīng)畅买,并強(qiáng)制執(zhí)行各種安全屬性以防止作弊。在法定貨幣方面细睡,像中央銀行這樣的組織控制貨幣供...
    Nutbox_Lab閱讀 3,083評(píng)論 1 3
  • 最近電視谷羞、新聞、網(wǎng)站經(jīng)常有講到比特幣纹冤,但普通人經(jīng)常被比特幣的各種信息搞得一頭霧水洒宝,到底什么是比特幣购公,它是誰開發(fā)的萌京,...
    納蘭三少閱讀 3,463評(píng)論 0 17
  • 我和狗喝開始返程了。 狗喝是個(gè)老頭宏浩,一個(gè)和名字一樣讓人惡心的老頭知残。他邋里邋遢,渾身散發(fā)著死老鼠味比庄;他癡呆呆地笑求妹,你...
    yhj靈閱讀 274評(píng)論 0 0
  • 夜,是冷的 穿過馬路 雙腳邁開徑直向前過紅綠燈 腦子驚覺已換了住處 方向是反的 那住了3年半的3米小陽臺(tái) 離目的地...
    毛毛靜丫閱讀 118評(píng)論 4 1
  • 2016-12-09 夜晚總能給人另一個(gè)自我 我沉浸在黑色里 陶醉于它賜予我的夢(mèng)里 我永遠(yuǎn)會(huì)奔跑佳窑,一直在尋找 夢(mèng)里...
    鯨沉海底溫柔呼吸閱讀 172評(píng)論 0 0