成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python中MD5加密

chadLi / 3071人閱讀

摘要:的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被壓縮成一種保密的格式就是把一個(gè)任意長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串。獲取由位隨機(jī)大小寫字母數(shù)字組成的值每次從中隨機(jī)取一位獲取原始密碼的值原始密碼隨機(jī)生成位加密后的密碼

MD5是什么

下面的概念是百度百科的:

Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù)。該算法的文件號(hào)為RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實(shí)現(xiàn)。將數(shù)據(jù)(如漢字)運(yùn)算為另一固定長度值,是雜湊算法的基礎(chǔ)原理,MD5的前身有MD2、MD3和MD4。

MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個(gè)任意長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。

Python中生成MD5
# 由于MD5模塊在python3中被移除
# 在python3中使用hashlib模塊進(jìn)行md5操作
import hashlib

# 待加密信息
str = "123456"
# 創(chuàng)建md5對(duì)象
hl = hashlib.md5()
#更新hash對(duì)象的值,如果不使用update方法也可以直接md5構(gòu)造函數(shù)內(nèi)填寫
#md5_obj=hashlib.md5("123456".encode("utf-8")) 效果一樣
hl.update(str.encode("utf-8"))
print("MD5加密前為 :" + str)
print("MD5加密后為 :" + hl.hexdigest())
MD5被破解

現(xiàn)在大部分應(yīng)用中我們會(huì)采用MD5進(jìn)行有關(guān)于密碼的加密,MD5之前最大的一個(gè)點(diǎn)就是不可逆的,但是中國山東數(shù)學(xué)家王小云等在Crypto 2004上提出一種能成功攻破MD5的算法

也有一些網(wǎng)站提供了MD5的加密和解密的過程,但是這些網(wǎng)站都是通過暴力破解的方式實(shí)現(xiàn)的

那么MD5被攻破了還有什么好的方式解決這個(gè)問題么?
第一就是雙重MD5加密
第二個(gè)就是MD5加鹽值(SALT)

雙重MD5加密
md5_obj=hashlib.md5("123456".encode("utf-8"))
str1=md5_obj.hexdigest() #加密1次
obj2=hashlib.md5(str1.encode("utf-8"))
str2=obj2.hexdigest()#加密2次
print(str2) #雙重加密后,同樣解密開
MD5加鹽值(SALT)

前面說到MD5不論是王小云的演講已經(jīng)破解,還是各大網(wǎng)站的暴力破解,都需要再一次提高M(jìn)D5的安全性。所謂加鹽就是加一些輔助的調(diào)料,這里稱為Salt值。
舉個(gè)栗子,比如用戶注冊(cè)的密碼,肯定不能明文存數(shù)據(jù)庫,當(dāng)然現(xiàn)在肯定不會(huì)再出現(xiàn)CSDN這種事情了,那密碼加密之前是單純的使用MD5,現(xiàn)在要給MD5加點(diǎn)調(diào)料,那問題是最終MD5不可逆,用戶注冊(cè)后第二次怎么登陸?

數(shù)據(jù)庫在存儲(chǔ)的時(shí)候需要在表里面多加一個(gè)Salt字段,用來存儲(chǔ)你加的調(diào)料是什么,等用戶登錄的時(shí)候,拿用戶注冊(cè)的密碼+Salt字段,然后再進(jìn)行MD5,然后再用加密后的內(nèi)容和數(shù)據(jù)庫存儲(chǔ)的MD5密碼進(jìn)行匹配,成功的話則提示成功,匹配失敗的話就登錄失敗。

from random import Random  
import hashlib
  
# 獲取由4位隨機(jī)大小寫字母、數(shù)字組成的salt值  
def create_salt(length = 4):  
    salt = ""  
    chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789"  
    len_chars = len(chars) - 1  
    random = Random()  
    for i in range(length):  
        # 每次從chars中隨機(jī)取一位  
        salt += chars[random.randint(0, len_chars)]  
    return salt  
  
# 獲取原始密碼+salt的md5值  
def create_md5(pwd,salt):  
    md5_obj = hashlib.md5()  
    md5_obj.update((pwd + salt).encode("utf-8"))  
    return md5_obj.hexdigest()  
  
# 原始密碼  
pwd = "123456"  
# 隨機(jī)生成4位salt  
salt = create_salt()  
# 加密后的密碼  
md5 = create_md5(pwd, salt)  
  
print("[pwd]
",pwd ) 
print("[salt]
", salt)  
print("[md5]
", md5) 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41356.html

相關(guān)文章

  • Python的RSA加密和PBE加密

    摘要:最近在寫接口的時(shí)候,遇到了需要使用加密和加密的情況,對(duì)方公司提供的都是的,我需要用來實(shí)現(xiàn)。于是,小明通過事先老板給他的公鑰來加密情報(bào)。使用對(duì)方公司的公鑰對(duì)所有的參數(shù)進(jìn)行加密,加密之后進(jìn)行編碼。 最近在寫接口的時(shí)候,遇到了需要使用RSA加密和PBE加密的情況,對(duì)方公司提供的DEMO都是JAVA的,我需要用python來實(shí)現(xiàn)。在網(wǎng)上搜了一下,python的RSA加密這塊寫的還是比較多的,但...

    Tony_Zby 評(píng)論0 收藏0
  • 盤點(diǎn)Python爬蟲的常見加密算法

      現(xiàn)如今,各行各業(yè)都會(huì)用到各種各樣的算法,包括我們?cè)谑褂肞ython的時(shí)候,也會(huì)使用到各種各樣的算法,比如,我們會(huì)使用到各種的加密算法,那么,到底什么才是加密算法呢?下面就給大家詳細(xì)解答下?! ⌒蜓浴 ∠旅嫘【幘秃痛蠹乙黄饋肀P點(diǎn)下數(shù)據(jù)收集環(huán)節(jié)中這一些熱門的密碼算法,這些有什么特點(diǎn)、數(shù)據(jù)加密的形式有哪些方面這些,了解了這一些以后其實(shí)對(duì)于我們反向破譯這一些數(shù)據(jù)加密的主要參數(shù)可以起到很多的協(xié)助!  相...

    89542767 評(píng)論0 收藏0
  • Python模塊分析:第2節(jié)-hashlib加密模塊

    摘要:上一篇文章模塊分析第節(jié)模塊下一篇文章模塊分析第節(jié)模塊模塊是用來對(duì)字符串進(jìn)行加密的模塊,明文與密文是一一對(duì)應(yīng)不變的關(guān)系用于注冊(cè)登錄時(shí)用戶名密碼等加密使用。一函數(shù)分析共有種加密算法,分別得到不同的加密密文。 上一篇文章:Python模塊分析:第1節(jié)-random模塊下一篇文章:Python模塊分析:第3節(jié)-typing模塊 hashlib模塊是用來對(duì)字符串進(jìn)行hash加密的模塊,明文與密...

    WalkerXu 評(píng)論0 收藏0
  • Python暴力破解zip文件口令

    摘要:通過內(nèi)置的模塊實(shí)現(xiàn)對(duì)文件的解壓,加點(diǎn)料完成口令破解模塊基本使用使用壓縮文件創(chuàng)建一個(gè)文件對(duì)象,壓縮是需要把改為將文件寫入文件中,即將文件壓縮將文件對(duì)象關(guān)閉使用解壓文件解壓準(zhǔn)備階段首先你需要一個(gè)壓縮文件,并且給它加上密碼,樣子長成這樣然后你就成 通過Python內(nèi)置的zipfile模塊實(shí)現(xiàn)對(duì)zip文件的解壓,加點(diǎn)料完成口令破解 zipfile模塊基本使用 使用zipfile壓縮文件 imp...

    hufeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<