python Crypto模塊的使用

前一個星期一直再弄爬取網易雲音樂的評論,真是一波三折,網頁又是動態js,普通的方法獲取不了,還有它發送的參數也要經過加密才....這篇文章就是寫一下Crypto模塊的使用。

Crypto不是自帶的模塊,需要下載。http://www.voidspace.org.uk/python/modules.shtml#pycrypto

我下載了之後,發現下載的是crypto而不是Crypto(就是差個首字母大小寫)

而crypto.Cipher而又不能運行,報錯,最後在:https://stackoverflow.com/questions/31485110/no-module-named-crypto-cipher/31485157 找到解答,需要在python目錄裏面把Python27\Lib\site-packages下的crypto文件改名,沒錯,就是直接改成Crypto。結果就能用了...

(因爲我上面下載的是免安裝版,所以沒安裝VS2008。我用過pip,下載不了Crypto)windows下安裝這些模塊真是招罪,要是我的電腦再好一點就弄雙系統了..扯遠了..


下面主要介紹一下Crypto.Cipher的AES算法。

代碼如下:

from Crypto.Cipher import AES
import base64
secret = "12345678912345678912345678912345"             #由用戶輸入的16位或24位或32位長的初始密碼字符串
cipher = AES.new(secret)                                #通過AES處理初始密碼字符串,並返回cipher對象
s = cipher.encrypt("1234567891234567")                  #輸入需要加密的字符串,注意字符串長度要是16的倍數。16,32,48..
print s                                                 #輸出加密後的字符串
print base64.b64encode(s)                               #輸出加密後的字符串的base64編碼。
print cipher.decrypt(s)                                 #解密
這是爲了一開始接觸的小白(我)理解的,一般通用一點的處理方法可以參考http://www.jb51.net/article/114364.htm

至於爲什麼要把已經加密後的字符串再用base64編碼,我覺得是對字符串的處理是基於二進制的,而base64的原理是在每6個二進制數的前面加兩個零,這樣的話,ascii對處理好的字符串編碼就全部可見了(起碼不是那些問號字符..),用charset模塊去測試一下,發現也是像我所說。


DES算法使用與AES的使用一樣,只不過要注意初始密碼字符串一定要是8位,而其他地方把AES換成DES就行(要是不回想配置環境的事情,Python還是很方便的..)

這個Crypto模塊還有哈希算法等其他一下加密算法,如果有大神或者小夥伴把這個模塊挖掘後,歡迎在下面留言哦,順便也教我使用咯,謝謝大家啦




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章