python中的hashlib模塊的使用

hashlib模塊

#哈希算法也叫摘要算法,相同的數據始終得到相同的輸出,不同的數據得到不同的輸出。
#(1)哈希將不可變的任意長度的數據,變成具有固定長度的唯一值
#(2)字典的鍵值對映射關係是通過哈希計算的,哈希存儲的數據是散列(無序)

# 應用場景:在需要效驗功能時使用
用戶密碼的 => 加密,解密
相關效驗的 => 加密,解密

 

hashlib中的MD5算法

 

# 第一步是引包
import hashlib


# 創建一個md5算法的對象
hs = hashlib.md5()
# print(hs)
# update中的 參數必須是二進制字節流 
hs.update("123".encode())
## hexdigest 返回32位十六進制的字符串(固定長度)
## 用一個hsvar來接收經過哈希算法返回的值
hsvar = hs.hexdigest()

 

#加鹽 (就是在簡單的算法中進行加入混餚參數)

語法格式如下:

#首先在實例化hashlib中的MD5對象的時候,加入混淆參數key,以此達到更加複雜的加密)

#加入的key參數一定也要是字節流
hs2 = hashlib.md5("abcd".encode())

hs2.update("123123".encode())

hs2var = hs2.hexdigest()

加鹽後的好處就是,增加了加密的安全性,使其不那麼容易被破解

但因爲hash算法是被公開的算法,其安全性不那麼好,一些簡單的加密 值很容易被逆向破解出來,說逆向破解也不那麼準確,

一般來說,破解此類算法只能使用窮舉法, 可以將 跑出來的值存入到一個大的數據庫中,哈希算法得出的值有唯一性,所以可以反向查詢已有的hash值來得到原始數據,當然這種網站也有, 我百度上看到的一個網站,你們可以進去看一看,一般的哈希值都能查詢到原數據,只要他們數據庫中有的話.

所以說最好的方法就是我們要加鹽,去加入複雜混餚參數,這樣的話大大提高了數據加密的安全性

鏈接:https://www.cmd5.com/ md5解密(本鏈接只作爲學習使用,勿將其使用到任何非法用途)

 

在開發編程中,常用到hash算法的方面應該有用戶的註冊登錄

下面有我寫的一個實例,供大家參考(爲了方便大家的閱讀,這個註冊登錄功能我沒有完善,比如說用正則去卡用戶名和密碼的格式等等,)

import hashlib

#定義一個加密函數,將傳入的參數轉換成32位的哈希值並返回
def md5(pwd):
    md5_password = hashlib.md5("abd".encode())
    md5_password.update(pwd.encode())
    return md5_password.hexdigest()

#定義一個登錄函數,將傳入的賬號密碼與本地密碼文件進行匹配,如果匹配到返回True
def login(user,pwd):
    with open("database","r",encoding="utf-8") as fp:
        for line in fp :
            u,p = line.strip().split("|")
            if u == user and p == md5(pwd):
                return True

#定義一個註冊的函數,將用戶傳入的賬號密碼寫入到本地的密碼文件中
def register(user,pwd):
    with open("database","w",encoding="utf-8") as fp:
        temp  = user+ "|" + md5(pwd)
        fp.write(temp)

#index菜單,給用戶的交互
choice = input("1表示登錄, 2表示註冊:").strip()
if choice == "2":
    user = input("用戶名:")
    pwd = input("密碼:")
    register(user,pwd)
elif choice == "1":
    user = input("用戶名:")
    pwd = input("密碼:")
    r = login(user,pwd)
    if r == True:
        print("登錄成功")
    else:
        print("登錄失敗")
else:
    print("賬號不存在")

 

 hashlib中的sha算法

  • # sha 加密效率低,算法精密,安全性高
  • sha: Secure Hash Algorithm(安全哈希算法)

   sha是美國國家標準與技術研究院與美國國家安全局設計,從94年以來被廣泛使用的加密算法.sha系列中的sha1, sha224, sha2556適用於長度不超過2^64二進制位的消息。sha384和sha512適用於長度不超過2^128二進制位的消息。不過,這個也不太安全.2005年的時候國內王小云教授及其團隊在sha1算法的破譯上就已經取得了很大的成就.今年穀歌已經攻破了sha1算法.另外,Matthew Green(https://twitter.com/matthew_d_green)在這一領域也有不錯的成就.

import hashlib

#實例化sha1對象
hs3 = hashlib.sha1()

#去將要去加密的數據通過一個方法放入對象中
hs3.update('123123'.encode())

#調用對象中的方法,計算並輸出加密後的40位的哈希值
hsvar = hs3.hexdigest()

sha算法常用的有 sha1 sha512等,語法一樣,只不過輸出的哈希值的長度不一樣,所以就不一一列舉了

 

 

 

 

原文出處:https://www.cnblogs.com/bruce-chen/p/10742690.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章