創作內容

4 GP

Hashing

作者:Yotsuba│2020-06-02 00:57:16│巴幣:8│人氣:169
Hashing 是雜湊

是電腦科學中一種對資料的處理方法,通過某種特定的函式 / 演算法

將要檢索的項目與用來檢索的索引關聯起來,生成一種便於搜尋的資料結構

這一段參考至 wiki,因為我覺得 wiki 的資料比我心中的草稿更嚴謹


對寫程式的人來說,你可能知道一種資料結構叫雜湊表

舉例來說,我現在定義 1 對應到 "Hello",2 對應到 "World",3 對應到 "Python"

我們就可以得到這樣的關係 :

1 -> "Hello" ,

2 -> "World" ,

3 -> "Python" ,

一個 Key 對應一個 Value 的關係,對於搜尋會非常方便

但如果今天 1 同時對應到 "Hello" 和 "World",這樣的關係稱作「碰撞」

所以我們在設計雜湊表時應該盡可能去避免這種事情發生

喔不 ! 當我沒說 ! 其實大部分時候我們也不會自己設計雜湊表


說那麼多,雜湊對於爬蟲有什麼理解上的必要嗎 ? 寫爬蟲也要會雜湊嗎 ?

其實今天要介紹的是一個常見的雜湊演算法,它叫做 MD5

給大家猜猜看 d41d8cd98f00b204e9800998ecf8427e 的 Input 是什麼 ?


之所以學爬蟲還要知道 MD5,是因為我爬過某些網站

網站中的 POST 表單夾帶像上面那樣類似亂碼的資料

而且我怎麼找都找不到 d41d8cd98f00b204e9800998ecf8427e 這樣子的字串

但是這一定是本地端計算好的資料才會被 POST 啊 !

最後終於在不知道什麼樣的機緣下,我才知道原來這是經由叫做 MD5 的演算法計算而來

對了,d41d8cd98f00b204e9800998ecf8427e 這串鬼東西是空字串的 Output 喔




這是之前在模擬麥當勞報報登入時的其中一小段程式碼

在撈封包的過程中也是看到長度 32 個字元的亂碼,由英文數字組成

夾帶在表單中,名為 mask 的參數,當時我真的百思不得其解

後來是透過反編譯的方式查到那段原始碼,才知道是一個叫做 MD5 的演算法

並且 Input 如圖所示,寫了一大坨程式碼只為了準備一個 POST 表單資料


MD5 可以產生出一個 128 位元的雜湊值,一般來說都會被表示為 32 位元十六進位數字

不過只是一般來說而已,MD5 也可以被表示成 16 位元長度,但我目前見到都是 32 位元

總之下次在處理 POST 表單時,如果有看見這樣格式的字串,就可以聯想到 MD5

或者你在撈封包的過程中就發現 md5.js 也是有可能的


總之,知道一下就好

延伸閱讀 : Encryption
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4802798
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

4喜歡★happy819tw 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:PTT Beauty 板... 後一篇:Encryption...

追蹤私訊切換新版閱覽

作品資料夾

alan30412lhy55551
佩可拉佩可拉看更多我要大聲說昨天23:32


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】