天天看點

區分哈希函數算法和加密算法

有的時候哈希函數和加密算法我們容易混為一談,因為哈希函數經常出現在加密場合,那在這裡區分一下。

我們以公鑰加密為例,對于加密來講分為兩方面,如果A想要給B發一條私密消息,那麼A需要用B的公鑰加密消息發給B,因為A不想人讓别人看到消息内容,若A拿自己的私鑰,則所有人都可以看到,而這個是加密的另一個方面數字簽名,

即A想給B發一個消息,并且要讓B知道這個消息就是A發給他的,那麼A要用自己的私鑰加密"名字"給這個加密消息做一個sign,B收到消息後,首先用A的公鑰把sign解密之後發現是A的"名字",知道這個消息一定是A發送的,然後用自己的私鑰把消息解密就得到了A給他的私信。

這是加密算法的所用,是雙向的,加密後可以解密

而哈希函數是單向的,即哈希函數對一個消息"加密"後,無法"解密",那我們用它來幹嘛,

比如,我們加密時的私鑰,一般加密是私鑰是很長的一種二進制,但是我們時不回去記幾百位的二進制的,是以 就用哈希函數把我們常用的不同長度的符号組合變換成需要的二進制,比如有的人常用123456作為私鑰(密碼),是以我們隻需要記住這個私鑰,以後需要的時候通過哈希函數把123456轉換成如百位的二進制(當然這個是通過機器來計算的),是以說哈希函數有自己應用的場景,當然我們可以找一個加密算法把123456加密成需要的片段,但是加密算法總是有對應的解密算法的,這個是我們私鑰不需要的,是以采用單向的哈希函數。

是以總結來說:加密算法是對消息進行加密,或者給消息加一個sign;哈希函數是用來産生單向的固定長度片段,這種片段是不需要恢複原來元素的。

繼續閱讀