千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > python加密算法介紹

python加密算法介紹

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-07 20:24:23 1699359863

一,HASH

Hash,一般翻譯做“散列”,也有直接音譯為”哈?!钡?,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射,pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,而不可能從散列值來(lái)唯一的確定輸入值。

摘要算法又稱為哈希算法,它是通過(guò)一個(gè)函數(shù),把任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)度固定的數(shù)據(jù)串,這個(gè)數(shù)據(jù)串使用的十六進(jìn)制表示。摘要算法是一個(gè)單向函數(shù),計(jì)算容易,如果想要反推摘要算法那是非常喜困難的,而且如果對(duì)原數(shù)據(jù)做了一個(gè)bit的修改,都會(huì)導(dǎo)致計(jì)算出的摘要完全不同,我們經(jīng)常使用摘要對(duì)比數(shù)據(jù)是否被修改過(guò)和密碼的加密;

簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。

HASH主要用于信息安全領(lǐng)域中加密算法,他把一些不同長(zhǎng)度的信息轉(zhuǎn)化成雜亂的128位的編碼里,叫做HASH值.也可以說(shuō),hash就是找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系

二,MD5

2.1什么是MD5算法

MD5訊息摘要演算法(英語(yǔ):MD5Message-DigestAlgorithm),一種被廣泛使用的密碼雜湊函數(shù),可以產(chǎn)生出一個(gè)128位的散列值(hashvalue),用于確保信息傳輸完整一致。MD5的前身有MD2、MD3和MD4。

2.2MD5功能

輸入任意長(zhǎng)度的信息,經(jīng)過(guò)處理,輸出為128位的信息(數(shù)字指紋);

不同的輸入得到的不同的結(jié)果(唯一性);

2.3MD5算法的特點(diǎn)

壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值的長(zhǎng)度都是固定的

容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易

抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),修改一個(gè)字節(jié)生成的MD5值區(qū)別也會(huì)很大

強(qiáng)抗碰撞:已知原數(shù)據(jù)和MD5,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

2.4MD5算法是否可逆?

MD5不可逆的原因是其是一種散列函數(shù),使用的是hash算法,在計(jì)算過(guò)程中原文的部分信息是丟失了的。

2.5MD5用途

防止被篡改:

比如發(fā)送一個(gè)電子文檔,發(fā)送前,我先得到MD5的輸出結(jié)果a。然后在對(duì)方收到電子文檔后,對(duì)方也得到一個(gè)MD5的輸出結(jié)果b。如果a與b一樣就代表中途未被篡改。

比如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網(wǎng)站上公布由安裝文件得到的MD5輸出結(jié)果。

SVN在檢測(cè)文件是否在CheckOut后被修改過(guò),也是用到了MD5.

防止直接看到明文:

現(xiàn)在很多網(wǎng)站在數(shù)據(jù)庫(kù)存儲(chǔ)用戶的密碼的時(shí)候都是存儲(chǔ)用戶密碼的MD5值。這樣就算不法分子得到數(shù)據(jù)庫(kù)的用戶密碼的MD5值,也無(wú)法知道用戶的密碼。(比如在UNIX系統(tǒng)中用戶的密碼就是以MD5(或其它類似的算法)經(jīng)加密后存儲(chǔ)在文件系統(tǒng)中。當(dāng)用戶登錄的時(shí)候,系統(tǒng)把用戶輸入的密碼計(jì)算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進(jìn)行比較,進(jìn)而確定輸入的密碼是否正確。通過(guò)這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。)

防止抵賴(數(shù)字簽名):

這需要一個(gè)第三方認(rèn)證機(jī)構(gòu)。例如A寫(xiě)了一個(gè)文件,認(rèn)證機(jī)構(gòu)對(duì)此文件用MD5算法產(chǎn)生摘要信息并做好記錄。若以后A說(shuō)這文件不是他寫(xiě)的,權(quán)威機(jī)構(gòu)只需對(duì)此文件重新產(chǎn)生摘要信息,然后跟記錄在冊(cè)的摘要信息進(jìn)行比對(duì),相同的話,就證明是A寫(xiě)的了。這就是所謂的“數(shù)字簽名”。

三,SHA-1

安全哈希算法(SecureHashAlgorithm)主要適用于數(shù)字簽名標(biāo)準(zhǔn)(DigitalSignatureStandardDSS)里面定義的數(shù)字簽名算法(DigitalSignatureAlgorithmDSA)。對(duì)于長(zhǎng)度小于2^64位的消息,SHA1會(huì)產(chǎn)生一個(gè)160位的消息摘要。當(dāng)接收到消息的時(shí)候,這個(gè)消息摘要可以用來(lái)驗(yàn)證數(shù)據(jù)的完整性。

SHA是美國(guó)國(guó)家安全局設(shè)計(jì)的,由美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究院發(fā)布的一系列密碼散列函數(shù)。

由于MD5和SHA-1于2005年被山東大學(xué)的教授王小云破解了,科學(xué)家們又推出了SHA224,SHA256,SHA384,SHA512,當(dāng)然位數(shù)越長(zhǎng),破解難度越大,但同時(shí)生成加密的消息摘要所耗時(shí)間也更長(zhǎng)。目前最流行的是加密算法是SHA-256.

四,MD5與SHA-1的比較

由于MD5與SHA-1均是從MD4發(fā)展而來(lái),它們的結(jié)構(gòu)和強(qiáng)度等特性有很多相似之處,SHA-1與MD5的最大區(qū)別在于其摘要比MD5摘要長(zhǎng)32比特。對(duì)于強(qiáng)行攻擊,產(chǎn)生任何一個(gè)報(bào)文使之摘要等于給定報(bào)文摘要的難度:MD5是2128數(shù)量級(jí)的操作,SHA-1是2160數(shù)量級(jí)的操作。產(chǎn)生具有相同摘要的兩個(gè)報(bào)文的難度:MD5是264是數(shù)量級(jí)的操作,SHA-1是280數(shù)量級(jí)的操作。因而,SHA-1對(duì)強(qiáng)行攻擊的強(qiáng)度更大。但由于SHA-1的循環(huán)步驟比MD5多80:64且要處理的緩存大160比特:128比特,SHA-1的運(yùn)行速度比MD5慢。

五,使用MD5進(jìn)行密碼機(jī)密

我們?nèi)粘I钪性诟鞔缶W(wǎng)站上注冊(cè)時(shí)填寫(xiě)的密碼大部分都是使用MD5的方式儲(chǔ)存在數(shù)據(jù)庫(kù)中,還有一部分使用的是sha的方式,但是會(huì)有好多朋友在注冊(cè)時(shí)填寫(xiě)的密碼過(guò)于簡(jiǎn)單,簡(jiǎn)單的密碼即便使用MD5方式加密了,黑客還可以事先計(jì)算出這些常用口令的MD5值,得到一個(gè)反推表,現(xiàn)在在網(wǎng)上隨便搜索一下就可以看到MD5在線解密,這種網(wǎng)站都是事先將這些常用的口令使用MD5計(jì)算一下放在一個(gè)庫(kù)中,我們將這種情況稱之為‘撞庫(kù)’;

由于常用口令很容易被黑客計(jì)算出來(lái),這時(shí)又出現(xiàn)了一種方法來(lái)避免被反推出來(lái),這個(gè)方法就是俗稱的“加鹽”,就是在你加密時(shí)在前面添加一個(gè)固定的字符串;

#!/usr/bin/python

#-*-encodeing:utf-8-*-

importhashlib

md5=hashlib.md5('鹽'.encode('utf-8'))

md5.update(b'123.com')

print(md5.hexdigest())

#cbff36039c3d0212b3e34c23dcde1456

#69c974abecb370564b051094c820fc6a

#此時(shí)得到的加密值與之前的比是不一樣的

還有一種更難破解的方式就是動(dòng)態(tài)加鹽

#!/usr/bin/python

#-*-encodeing:utf-8-*-

importhashlib

usr='Fang'

md5=hashlib.md5(usr[0:2].encode('utf-8')+'鹽'.encode('utf-8'))

#這種方法就是取用戶名的前兩個(gè)字符再加上一個(gè)固定的字符,然后在加上密碼

md5.update(b'123.com')

print(md5.hexdigest())

以上內(nèi)容為大家介紹了python加密算法介紹,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python 面向?qū)ο蟮能浖_(kāi)發(fā)

很多人在學(xué)完了python的class機(jī)制之后,遇到一個(gè)生產(chǎn)中的問(wèn)題,還是會(huì)懵逼,這其實(shí)太正常了,因?yàn)槿魏纬绦虻拈_(kāi)發(fā)都是先設(shè)計(jì)后編程,python的cla...詳情>>

2023-11-07 23:20:48
Python 決策樹(shù)算法思想

決策樹(shù)(decisiontree)是一個(gè)樹(shù)結(jié)構(gòu)(可以是二叉樹(shù)或者非二叉樹(shù))。決策樹(shù)分為分類樹(shù)和回歸樹(shù)兩種,分類樹(shù)對(duì)離散變量做決策樹(shù),回歸樹(shù)對(duì)連續(xù)變量做...詳情>>

2023-11-07 23:10:00
Python C4.5算法

ID3算法的作者昆蘭基于上面的不足,對(duì)ID3算法做了改進(jìn),這就是C4.5算法,也許你會(huì)問(wèn),為什么不叫ID4,ID5之類的名字呢?那是因?yàn)闆Q策樹(shù)當(dāng)時(shí)太火...詳情>>

2023-11-07 23:02:48
Python 面向過(guò)程

python面向過(guò)程優(yōu)點(diǎn):復(fù)雜的問(wèn)題流程化,進(jìn)而簡(jiǎn)單化(一個(gè)復(fù)雜的問(wèn)題,分成一個(gè)個(gè)小的步驟去實(shí)現(xiàn),實(shí)現(xiàn)小的步驟將會(huì)非常簡(jiǎn)單)舉個(gè)典型的面向過(guò)程...詳情>>

2023-11-07 22:55:36
Python編程規(guī)范的重要性

首先談一下注釋:注釋不止是為了自己以后看的更清楚,還是為了以后的開(kāi)發(fā)人員所準(zhǔn)備的,其實(shí)一段時(shí)間后,當(dāng)需要對(duì)程序做一些修改或者是改正某個(gè)...詳情>>

2023-11-07 22:37:35