看大神如何用Python進行最常見的加密操作?(附Python教程)

簡介:前言我們所說的加密方式,都是對二進制編碼的格式進行加密的,對應到Python中,則是我們的Bytes。所以當我們在Python中進行加密操作的時候,要確保我們操作的是Bytes,否則就會報錯。將字符串和Bytes互相轉換可以使 ...

看大神如何用Python進行最常見的加密操作?(附Python教程)

python 的計算機語言,3d 渲染,街頭的藍色標誌

前言我們所說的加密方式,都是對二進制編碼的格式進行加密的,對應到Python中,則是我們的Bytes。所以當我們在Python中進行加密操作的時候,要確保我們操作的是Bytes,否則就會報錯。將字符串和Bytes互相轉換可以使用encode()和decode()方法。如下所示:方法中不傳參數則是以默認的utf-8編碼進行轉換


In [1]: '南北'.encode()
Out[1]: b'\\\\\\\\\\xe5\\\\\\\\\\x8d\\\\\\\\\\x97\\\\\\\\\\xe5\\\\\\\\\\x8c\\\\\\\\\\x97'
In [2]: b'\\\\\\\\\\xe5\\\\\\\\\\x8d\\\\\\\\\\x97\\\\\\\\\\xe5\\\\\\\\\\x8c\\\\\\\\\\x97'.decode()
Out[2]: '南北'


注:兩位十六進制常常用來顯示一個二進制字節。
利用binascii模塊可以將十六進制顯示的字節轉換成我們在加解密中更常用的顯示方式:

看大神如何用Python進行最常見的加密操作?(附Python教程)


在這裡我相信有很多想要學習Python的小夥伴,小編花了一個月時間,整理了一份最適合2019年學習的乾貨教程,從最基礎到各種框架都有整理,送給每一位Python小夥伴,文末免費自取哦~
URL編碼
簡介
正常的URL中是隻能包含ASCII字符的,也就是字符、數字和一些符號。而URL編碼就是一種瀏覽器用來避免url中出現特殊字符(如漢字)的編碼方式。
其實就是將超出ASCII範圍的字符轉換成帶%的十六進制格式。
Python實現

看大神如何用Python進行最常見的加密操作?(附Python教程)


Base64編碼
簡述
Base64是一種用64個字符來表示任意二進制數據的方法。
Base64編碼可以成為密碼學的基石。可以將任意的二進制數據進行Base64編碼。所有的數據都能被編碼為並只用65個字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )編碼後的數據~=編碼前數據的4/3,會大1/3左右。
Base64編碼的原理

看大神如何用Python進行最常見的加密操作?(附Python教程)


將所有字符轉化為ASCII碼。
將ASCII碼轉化為8位二進制 。
將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位。
統一在6位二進制前補兩個0湊足8位。
將補0後的二進制轉為十進制。
從Base64編碼表獲取十進制對應的Base64編碼。
Base64編碼的說明
轉換的時候,將三個byte的數據,先後放入一個24bit的緩衝區中,先來的byte佔高位。
數據不足3byte的話,於緩衝區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字符作為編碼後的輸出。
不斷進行,直到全部輸入數據轉換完成。
如果最後剩下兩個輸入數據,在編碼結果後加1個“=”。
如果最後剩下一個輸入數據,編碼結果後加2個“=”。
如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。
Python的Base64使用
Python內置的base64模塊可以直接進行base64的編解碼


注意:用於base64編碼的,要麼是ASCII包含的字符,要麼是二進制數據

看大神如何用Python進行最常見的加密操作?(附Python教程)


MD5(信息-摘要算法)
簡述
message-digest algorithm 5(信息-摘要算法)。經常說的“MD5加密”,就是它信息-摘要算法。
md5,其實就是一種算法。可以將一個字符串,或文件,或壓縮包,執行md5後,就可以生成一個固定長度為128bit的串。這個串,基本上是唯一的。


不可逆性
每個人都有不同的指紋,看到這個人,可以得出他的指紋等信息,並且唯一對應,但你只看一個指紋,是不可能看到或讀到這個人的長相或身份等信息。
特點
壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
容易計算:從原數據計算出MD5值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
舉個栗子:世界上只有一個我,但是姑娘卻是非常非常多的,以一個有限的我對幾乎是無限的姑娘,所以可能能搞定非常多(100+)的妞,這個理論上的確是通的,可是實際情況下....
Python的MD5使用
由於MD5模塊在python3中被移除,在python3中使用hashlib模塊進行md5操作

看大神如何用Python進行最常見的加密操作?(附Python教程)


MD5長度
md5的長度,默認為128bit,也就是128個0和1的二進制串。這樣表達是很不友好的。所以將二進制轉成了16進制,每4個bit表示一個16進制,所以128/4 = 32 換成16進製表示後,為32位了。
為什麼網上還有md5是16位的呢?
其實16位的長度,是從32位md5值來的。是將32位md5去掉前八位,去掉後八位得到的。
Python加密庫PyCryptodome
PyCrypto是 Python 中密碼學方面最有名的第三方軟件包。可惜的是,它的開發工作於2012年就已停止。
幸運的是,有一個該項目的分支PyCrytodome 取代了 PyCrypto 。
學習從來不是一個人的事情,要有個相互監督的夥伴,工作需要學習python或者為了入行、轉行學習python的夥伴可以轉發+關注並私信小編“資料”,獲取全套資源,和大牛面對面交流!

重點:轉發+關注並私信“資料”免費獲取

看大神如何用Python進行最常見的加密操作?(附Python教程)


分享到:


相關文章: