python之哈希算法

哈希(Hash)算法:`hash(object)`

一贷祈,基本概念

哈希算法將一個不定長的輸入途乃,通過散列函數(shù)變換成一個定長的輸出娘赴,即散列值憾儒。是一種信息摘要算法询兴。對象的hash值比原對象擁有更低的內(nèi)存復(fù)雜度。

?二起趾,hash算法與加密的區(qū)別

它不同于加密诗舰。哈希(hash)是將目標(biāo)文本轉(zhuǎn)換成具有相同長度的,不可逆的雜湊字符串训裆,而加密則是將文本轉(zhuǎn)換為具有相同長度的眶根,可逆的密文。

哈希(hash)算法是不可逆的边琉,只能由輸入產(chǎn)生輸出属百,不能由輸出產(chǎn)生輸入。而加密則是可逆的变姨。即可以從輸入產(chǎn)生輸出族扰,也可以反過來從輸出推出輸入。

三定欧,哈希碰撞(Collision)

對于hash算法渔呵,不同的數(shù)據(jù)應(yīng)該生成不同的哈希值。如果兩個不同的數(shù)據(jù)經(jīng)過Hash函數(shù)計算得到的Hash值一樣砍鸠。就稱為哈希碰撞(collision)厘肮。哈希碰撞無法被完全避免。只能降低發(fā)生概率睦番。

好的hash函數(shù)會導(dǎo)致最少的hash碰撞。

*

?四耍属,為什么不能對可變的對象進(jìn)行hash處理托嚣?

可哈希性(hashable):

可哈希的數(shù)據(jù)類型為不可變的數(shù)據(jù)結(jié)構(gòu)(如字符串srt,元組tuple厚骗,對象集objects等)示启。這種數(shù)據(jù)被稱為可哈希性。

不可哈希性:

不可哈希的數(shù)據(jù)類型领舰,為可變的數(shù)據(jù)結(jié)構(gòu)(如字典dict夫嗓,列表list和集合set等)。

如果對可變的對象進(jìn)行哈希處理冲秽,則每次對象更新時舍咖,都需要更新哈希表。這樣我們則需要將對象移至不同的數(shù)據(jù)集锉桑,這種操作會使花費(fèi)過大排霉。

因此設(shè)定不能對可變的對象進(jìn)行hash處理。

**

五民轴,Python3.x增加的隨機(jī)性

**

Python3.x添加了hash算法的隨機(jī)性攻柠,以提高安全性球订,因此對于每個新的python調(diào)用,同樣的數(shù)據(jù)源生成的結(jié)果都將不同瑰钮。

哈希方法有(MD5, SHA1, SHA256與SHA512等)冒滩。常用的有SH256與SHA512。MD5與SHA1不再常用浪谴。

- MDH5 (不常用)

- SHA1 (不常用)

- SHA256 (常用)

- SHA512 (常用)

六开睡,其他hash算法

1. simhash算法:

一種局部敏感的hash算法,它產(chǎn)生的簽名在一定程度上可以表征原內(nèi)容的相似度较店。

> 可以被用來比較文本的相似度士八。

安裝simhash:


Pip3 install simhash


**2. Imagehash算法:*

感知哈希算法(perceptual Hash Algorithm)。用于檢測圖像和視頻的差異梁呈。

安裝Imagehash:


pip3 install Imagehash


比較下面兩張圖片的Imagehash值



可以看到兩張圖片的hash值非常相似婚度。相似的圖片可以生成相似的哈希值是Imagehash的特點(diǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末官卡,一起剝皮案震驚了整個濱河市蝗茁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寻咒,老刑警劉巖哮翘,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毛秘,居然都是意外死亡饭寺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門叫挟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艰匙,“玉大人,你說我怎么就攤上這事抹恳≡蹦” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵奋献,是天一觀的道長健霹。 經(jīng)常有香客問我,道長瓶蚂,這世上最難降的妖魔是什么糖埋? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮扬跋,結(jié)果婚禮上阶捆,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好洒试,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布倍奢。 她就那樣靜靜地躺著,像睡著了一般垒棋。 火紅的嫁衣襯著肌膚如雪卒煞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天叼架,我揣著相機(jī)與錄音畔裕,去河邊找鬼。 笑死乖订,一個胖子當(dāng)著我的面吹牛扮饶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乍构,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甜无,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哥遮?” 一聲冷哼從身側(cè)響起岂丘,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眠饮,沒想到半個月后奥帘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仪召,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年寨蹋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扔茅。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡钥庇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咖摹,到底是詐尸還是另有隱情,我是刑警寧澤难述,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布萤晴,位于F島的核電站,受9級特大地震影響胁后,放射性物質(zhì)發(fā)生泄漏店读。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一攀芯、第九天 我趴在偏房一處隱蔽的房頂上張望屯断。 院中可真熱鬧,春花似錦、人聲如沸殖演。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趴久。三九已至丸相,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彼棍,已是汗流浹背灭忠。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留座硕,地道東北人弛作。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像华匾,于是被迫代替她去往敵國和親映琳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354