hash,一般翻譯做「雜湊」,也有直接音譯為」雜湊」的,就是把任意長度的輸入(又叫做預對映,pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值。
簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。
hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值.也可以說,hash就是找到一種資料內容和資料存放位址之間的對映關係
什麼是md5演算法
md5訊息摘要演演算法(英語:md5 message-digest algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位的雜湊值(hash value),用於確保資訊傳輸完整一致。md5的前身有md2、md3和md4。
md5功能
輸入任意長度的資訊,經過處理,輸出為128位的資訊(數字指紋);
不同的輸入得到的不同的結果(唯一性);
md5演算法的特點
壓縮性:任意長度的資料,算出的md5值的長度都是固定的
容易計算:從原資料計算出md5值很容易
抗修改性:對原資料進行任何改動,修改乙個位元組生成的md5值區別也會很大
強抗碰撞:已知原資料和md5,想找到乙個具有相同md5值的資料(即偽造資料)是非常困難的。
md5演算法是否可逆?
md5不可逆的原因是其是一種雜湊函式,使用的是hash演算法,在計算過程中原文的部分資訊是丟失了的。
md5用途
防止被篡改:
防止直接看到明文:
防止抵賴(數字簽名):
利用hashlib模組寫乙個md5加密的程式:
importhashlib,string,random
defmake_md5(string):
str = hashlib.md5() #
呼叫md5方法
str.update(bytes(string,encoding="
utf-8
")) #
傳入bytes型別的字元
print(str.hexdigest()) #
輸出加密後的字元
with open("
pwd.txt
","a+
",encoding="
utf-8
") as f:
f.write(string + "
-" + str.hexdigest() +"\n"
)while
true:
username = input("
請輸入使用者名稱:")
#str = input("請輸入要生成md5的字串:")
make_md5(str)
day48 執行緒 訊號量
1 訊號量,用來保證多個執行緒不會互相衝突。2 迷你唱吧 每次只能有兩人在裡面唱k from threading import thread from threading import semaphore import time import random defsing i,sem sem.acq...
千鋒逆戰班學習日誌Day48
九 css的尺寸屬性 十 css列表屬性 十一 css邊框屬性 css高階 術語解釋 二 css定位 2.3固定定位 2.4相對定位 2.5絕對定位 三 塊級元素和行內元素 四 伸縮布局flex 名詞解釋 案例一案例二 作業千鋒逆戰班學習第48天 努力或許沒有收穫,但不努力一定沒收穫,加油。今天我學...
day48 專案管理學習筆記
專案與日常運作 專案與日常運作的區別 專案的特徵 專案的定義 專案管理的重要性 專案管理的通俗理解 專案管理的定義 專案管理框架 專案管理的五大標準化過程組 專案管理的十大知識領域 專案管理的四十七個過程 專案型別 初始化專案分析 常用的專案生存期模型 瀑布模型 瀑布模型的特點 原型模型 原型模型的...