md5密文與明文之間的相互轉(zhuǎn)換
一、字符串編碼
我們?cè)诩用苤?,首選需要做的就是將需要加密的字符串進(jìn)行編碼。編碼方式可以使用UTF8、ASCII以及GBK。編碼方式的不同會(huì)影響到MD5加密的結(jié)果。所以在加密之前,我們要選擇好合適的編碼方式。
UTF-8 編碼
UTF-8編碼是種可變長(zhǎng)度字符編碼,針對(duì)Unicode的任意字符。TF-8編碼的每個(gè)字符的長(zhǎng)度可以是1-4字節(jié),在進(jìn)行字符串編碼的時(shí)候,我們要把字符串當(dāng)中的每一個(gè)字符轉(zhuǎn)換成對(duì)應(yīng)的UTF-8編碼。
例如下面代碼。使用Python中的encode()函數(shù)將字符串轉(zhuǎn)換為UTF-8編碼
ASCII 編碼
ASCII編碼是我們常用的字符編碼方式,它需要使用指定的7位或8位二進(jìn)制數(shù)組合來(lái)表示128或256種隨機(jī)的字符。其中就包括了數(shù)字和英文以及一些特殊的標(biāo)點(diǎn)符號(hào)。比如A的ASCII 編碼為 02000002,數(shù)字 1 的 ASCII 編碼為 00220002
假如我們對(duì)字符串 "sojson"進(jìn)行編碼。如下
GBK 編碼
GBK編碼是中國(guó)大陸制訂的一種雙字節(jié)編碼方式。在GBK里面,每一個(gè)中文由兩個(gè)字節(jié)來(lái)表示,每個(gè)字節(jié)的取值范圍是0x81~0xfe。同樣的使用GBK編碼進(jìn)行字符串編碼的話需要將字符串中的每個(gè)中文字符轉(zhuǎn)換為對(duì)應(yīng)的GBK編碼。
例如下面代碼,對(duì)于字符串 "你好",進(jìn)行編碼
二、MD5加密
對(duì)字符串進(jìn)行勒編碼之后,接下來(lái)就是MD5加密了,MD5算法是不可逆的,同時(shí)還具備唯一性、敏感性等特點(diǎn)。使用Python中的 hashlib 模塊可以方便地實(shí)現(xiàn)MD5加密。具體步驟如下:
1. 導(dǎo)入 hashlib 模塊
```
import hashlib
```
2. 創(chuàng)建一個(gè) hashlib 對(duì)象
```
m = hashlib.md5()
```
3. 更新哈希對(duì)象以便將輸入字符串添加到哈希中
```
m.update(encoded_s)
```
4. 獲取哈希對(duì)象的摘要
```
digest = m.hexdigest()
print(digest)
```
完整代碼如下:
```
import hashlib
s = "hello"
encoded_s = s.encode("utf-8")
m = hashlib.md5()
m.update(encoded_s)
digest = m.hexdigest()
print(digest)
```
三、密文與明文的相互轉(zhuǎn)換
MD5密文和明文之間的轉(zhuǎn)化在工作中經(jīng)常需要用到。下面給大家?guī)?lái)兩個(gè)方向的轉(zhuǎn)換方法。
1、MD5密文轉(zhuǎn)明文
由于MD5密文是一種不可逆的操作,所以我們要通過(guò)字典破解或者暴力破解來(lái)操作,在實(shí)際的操作過(guò)程中,需要將MD5密文與已知明文進(jìn)行比對(duì),來(lái)判斷輸入的明文是否正確。
其實(shí)現(xiàn)在有很多的大佬都做出了在線的DM5解密工具,我們常用的就有http://zijieyoumin.cn/encrypt.html。在進(jìn)行解密的時(shí)候,要將明文通過(guò)上述方式進(jìn)行編碼,然后進(jìn)行MD5加密,最后將加密后的結(jié)果與目標(biāo)MD5密文進(jìn)行比對(duì)。
2. 明文轉(zhuǎn)MD5密文
明文轉(zhuǎn)MD5密文是可逆的。所以我們只要通過(guò)MD5加密將明文轉(zhuǎn)換為固定長(zhǎng)度的MD5密文就可以了。下面介紹hashlib進(jìn)行明文轉(zhuǎn)MD5密文的操作。具體步驟如下
1. 將明文進(jìn)行編碼
```
s = "123456"
encoded_s = s.encode("utf-8")
```
2. 創(chuàng)建一個(gè) hashlib 對(duì)象
```
m = hashlib.md5()
```
3. 更新哈希對(duì)象以便將輸入字符串添加到哈希中
```
m.update(encoded_s)
```
4. 獲取哈希對(duì)象的摘要
```
digest = m.hexdigest()
print(digest)
```
完整代碼如下:
```
import hashlib
s = "123456"
encoded_s = s.encode("utf-8")
m = hashlib.md5()
m.update(encoded_s)
digest = m.hexdigest()
print(digest)
```
總結(jié)
對(duì)md5密文與明文之間的相互轉(zhuǎn)換今天就介紹到這里拉,希望這邊文章對(duì)廣大朋友們有所幫助。
版權(quán)所屬:SO JSON在線解析
原文地址:http://zijieyoumin.cn/blog/415.html
轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。
如果本文對(duì)你有幫助,那么請(qǐng)你贊助我,讓我更有激情的寫下去,幫助更多的人。