python-加密


python中hashlib提供了常見的摘要算法,如MD5,SHA1等等

什么是摘要算法呢?摘要算法又稱哈希算法\算列算法.它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示),主要用於防篡改,可以不送傳明文

md5是一種不可逆的加密算法,目前也是最牢靠的算法之一,它對任何字符串都可以成一段唯一的固定長度的代碼

sha1是由美國標准技術局發布的,也是目前最先進的加密技術,它是基於md5改進而來

des是對稱加密算法

  安裝pyDES.py到python安裝目錄下的Lib中

cmd命令行,進入到目錄,招到setup.py文件,執行命令:python setup.py install

cmd ->
d: ->
cd C:\Python33\Lib\pyDes-2.0.1
python setup.py install

 

 

三種加密方式

import hashlib #MD5和sha1算法
import base64
from pyDes import * #把pydes壓縮包里的pyDes.py拷貝到python安裝目錄下的Lib中

def md5_encode(data):
    #調用md5算法,用一個變量接收
    m = hashlib.md5()
    #調用update對傳來的data進行數據加密,encode utf-8的編碼后才能用update
    m.update(data.encode('utf-8'))
    return m.hexdigest() #經過特殊處理之后以字符串形式返回

def sha1_encode(data):
    sha1 = hashlib.sha1()
    sha1.update(data.encode('utf-8'))
    return sha1.hexdigest()

#DES加密
'''
pyDes.des(key,[mode],[IV],[pad],[padmode])
參數的意思分別如下:
key 加密密鑰.長度為8位,必選
mode 加密方式.ECB(默認),CBC(安全性好於前者)
IV  初始字節數(長度為8位),如果你選擇的加密方式為CBC就必須有這個參數,否則可以沒有
pad 加密時,將該字符添加到數據塊的結尾;解密時,將刪除從最后一個的往前8位
padmode PAD_NORMAL\PAD_PKCS5,當選擇前者時必須設置pad
'''

def des_encode(data):
    #設置加密的規范
    k = des("xqtest66",padmode = PAD_PKCS5)
    #k = des("xqtest66",CBC,"goodluck",pad = "hahahehe",padmode = PAD_NORMAL)
    
    
    #encrypt來加密我的數據,然后進行base64編碼
    encodeStr = base64.b64encode(k.encrypt(data))
    return encodeStr

data = "i love pythoon"

result1 = md5_encode(data)
print("md5加密:",result1)

result2 = sha1_encode(data)
print("sha1加密:",result2)

result3 = des_encode(data)
print("des加密:",result3)

結果:

md5加密: a6f3ba84c70f394fc4e7d87bc467cd4e
sha1加密: 4b714ecbad5e289593aa21412da0703e91d011e0
des加密: b'oa/KM3bfrxyOOz7m9DU2rA=='

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM