hashlib sha摘要演算法模組

2022-05-08 15:03:12 字數 3667 閱讀 3619

摘要演算法的模組

用處:1、檢視某兩個檔案是否完全一致

"abcdefggg"

"abcdefhhg"

2、加密認證

把密碼加密後寫入檔案

(發生任何變化 都不行)

模組:1、md5

2、sha sha256 sha512 等等

簡單示例:

import hashlib      #

匯入模組

obj = hashlib.md5('

字串') #

建立md5類的物件 (加鹽:靜態和動態)

obj.update(b"

對比內容,或 加密內容

") #

傳入資料 bytes 型別 bytes()

a = obj.hexdigest() #

對比的結果

print(a) #

列印,寫入檔案 等等操作

校驗兩個字串是否一致:

import

hashlib

md5_obj1 =hashlib.md5()

md5_obj1.update(b

'how are you?

') #

b"" 轉換成bytes 型別

a = md5_obj1.hexdigest() #

hexdigest 找摘要演算法要結果

print

(a)#

04e35eb3e4fcb8b395191053c359ca0e

md5_obj2 =hashlib.md5()

md5_obj2.update(b

'how are

') #

兩個字串不一樣

b =md5_obj2.hexdigest()

print(b) #

列印摘要演算法 的結果

#699f3620f6b19226ec27865572f7b704

print(a == b) #

md5 也不一樣

#false #文章校對(是否完全一致),密碼校驗 等等

md5_obj.update()

支援多行,校驗檔案的時候,分別讀取2個檔案,一行一行讀,每一行update一下

對比最終的hexdigest()

import

hashlib

md5_obj1 =hashlib.md5()

md5_obj2 =hashlib.md5()

with open(

'name

','r

',encoding='

utf-8

') as f,\

open('檔案

','r

',encoding='

utf-8

') as f1:

for line in

f: md5_obj1.update(bytes(line,encoding='

utf-8'))

for line1 in

f1: md5_obj2.update(bytes(line1,encoding='

utf-8

')) #

update() 累加

a =md5_obj1.hexdigest()

b =md5_obj2.hexdigest()

print(a == b) #

對比最終的 hexdigest()

#true 或 false

import

hashlib

md5_obj1 =hashlib.md5()

md5_obj2 =hashlib.md5()

with open(

'name

','rb

') as f,\ #

直接用 "rb" 模式開啟 , 不用 encoding='utf-8' 編碼

open('

檔案','rb'

) as f1:

for line in

f: md5_obj1.update(bytes(line))

for line1 in

f1: md5_obj2.update(bytes(line1))

a =md5_obj1.hexdigest()

b =md5_obj2.hexdigest()

print(a == b)

密碼加密:

import

hashlib

md5_obj =hashlib.md5()

md5_obj.update(b

'123456789

') #

密碼a =md5_obj.hexdigest()

print

(type(a))

with open(

'name

','w

') as f:

#f.write(bytes(a,encoding='utf-8')) #'wb' 模式開啟 , 要轉成 bytes型別

f.write(a)

如果只是簡單的加密,可以暴力破解:撞庫

撞庫: 暴力破解密碼

加鹽: 為客戶加字串(有的客戶密碼太簡單,主動弄複雜)

分為靜態加鹽和動態加鹽

靜態加鹽:

import

hashlib

md5_obj = hashlib.md5('

fdfdf@#$

'.encode('

utf-8

')) #

給下面的密碼加上一些字串

md5_obj.update(b'

123456789

') #

密碼a =md5_obj.hexdigest()

print

(a)e8d298f03f7b6b0ce169ba30729a19e5

動態加鹽:

md5_obj = hashlib.md5('

使用者名稱 + @#@df +密碼

'.encode('

utf-8

'))

也是個演算法

sha 和 hsshlib 一樣

sha:

1.sha

2.sha256

3.sha512

4.....

256,512,位元組數越多, 執行速度越慢,,安全性更高

小結:1、摘要的過程不可逆

2、能做的事:

檔案的一致性檢測

使用者的加密認證:

單純的md5不夠安全

靜態加鹽: 簡單的鹽可能被破解,且破解之後所有的鹽都失效了

動態加鹽:動態的

python摘要 python 摘要演算法

一 概述 摘要演算法主要特徵是加密過程不需要金鑰,並且加密的資料無法解密,只有輸入相同的明文資料經過相同的摘要演算法才能得到相同的密文。摘要演算法主要應用在 數字簽名 領域。接下來會講述rsa公司的md5演算法和sha 1演算法。二 原理 通過乙個函式,把任意長度的資料轉換成乙個長度固定的資料串 通...

訊息摘要演算法 數字摘要

為了保證檔案或值的安全性,因為使用訊息摘要生成的值是不可篡改的 特點 準備工作 string input 訊息摘要 string algorithm md5 public static void main string args throws exception 建立乙個訊息摘要物件messaged...

自動摘要演算法

from 相對於textrank,摘取關鍵句子還有一些比較簡單的演算法,比如這篇,我們可以把句子分別和整篇文章做比較,相似性最大的就是關鍵的句子。而textrank其實就是pagerank演算法擴充套件到句子上,來的到一些全域性的資訊。textrank的 在這裡。首先我們看pagerank演算法,就...