关于hash(一):基本概念
1、什么Hash
在計算機科學中,hash是一種函數,該函數可以把任意長度的輸入轉換為固定長度的輸出,輸出的結果稱為hash值,通常為一個字符串,對于特定的hash算法輸出結果的長度總是一定的,例如,不管是輸入內容是長如小說般的內容還是一個字母,MD5總會產生32為長度的hash值。
hash函數的特點:
對于特定的hash算法輸出結果的長度總是一定的;
對于相同的輸入內容不管執行多少次hash函數,總會得到相同的hash值;
對于輸入字符串哪怕及其微小的變動也會引起輸出結果巨大的變化;
哈希過程是單向的,即不能通過特定的函數從hash值恢復出原始數據。
2、常見的hash算法
有很多廣泛使用的hash算法,例如MD5、SHA1、SHA224、SHA256、SHA512等,一般編程語言中都提供的了常見的hash算法,如在python中:
import hashlib hash = hashlib.md5(“Dataspace”.encode(‘utf-8’)) print(hash.hexdigest())將會輸出:
e2d48e7bc4413d04a4dcb1fe32c877f63、常見hash算法的應用場景
3.1 hash與密碼
如果一個系統在數據庫中直接保存了用戶名和密碼明文,那么一旦用戶信息表泄露,捕獲到信息的人就能使用任意賬號登錄系統;此時如果用戶信息表中密碼字段保存的是用戶密碼的hash值,即使該密碼泄露,拿到該密碼的人也并不能使用它來登錄系統,因此給密碼進行hash處理,會在一定程度上增加用戶的安全性,注意,這種安全性并不是絕對的,因為hash過程雖然是不可逆的,但卻可以被破解,因為這個世界上早有人搜集了不計其數的明文以及對應的hash值,放在數據庫中,并以網站的形式對外提供服務,如https://cmd5.com/。
對密碼更為安全的處理形式將會另行展開論述。
3.2 對抗計算機病毒
當發布出去的計算機程序感染病毒時,執行該程序可能會引起一些嚴重的后果, 那么如何保證用戶執行的程序是開發者“真正”發布的程序呢?使用hash算法就是起到防范病毒的作用。具體來說就是,當發布程序時,會以程序為輸入使用hash算法得到一個hash值,然后將程序和該hash值一并分發給用戶,用戶以得到的程序作為輸入,執行指定的hash算法,也會得到一個hash值,如果用戶執行出來的hash值與程序發布者發布的hash值一致說明程序未被篡改。
總結
以上是生活随笔為你收集整理的关于hash(一):基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Shiro 权限管理
- 下一篇: SylixOS下影子终端工具