python的加密模塊(md5,sha,crypt)學習


md5(Message-Digest Algorithm 5) 模塊用於計算信息密文(信息摘要),得出一個128位的密文。sha模塊跟md5相似,但生成的是160位的簽名。使用方法是相同的。

如下實例是使用md5的:

# /usr/bin/python
# -*- coding:utf-8 -*-
import base64
try:
    import hashlib
    hash = hashlib.md5()
except ImportError:
    # for Python << 2.5
    import md5
    hash = md5.new()
hash.update('spam,spam,and egges')
value = hash.digest()
print repr(value)   #得到的是二進制的字符串
print hash.hexdigest()  #得到的是一個十六進制的值
print base64.encodestring(value) #得到base64的值
# /usr/bin/python
# -*- coding:utf-8 -*-
# 客戶端與服務器端通信的信息的驗證
import string import random def getchallenge(): challenge = map(lambda i: chr(random.randint(0,255)),range(16)) return string.join(challenge,"") def getresponse(password,challenge): try: import hashlib hash = hashlib.md5() except ImportError: # for Python << 2.5 import md5 hash = md5.new() hash.update(password) hash.update(challenge) return hash.digest() print "client: ","connect" challenge= getchallenge() print "server: ",repr(challenge) client_response = getresponse("trustno1",challenge) print "client: ",repr(client_response) server_response = getresponse("trustno1",challenge) if client_response == server_response: print "server:","login ok"

crypt 模塊(只用於 Unix)實現了單向的 DES 加密, Unix 系統使用這個加密算法來儲存密碼, 這個模塊真正也就只在檢查這樣的密碼時有用.
如下實例 展示了如何使用 crypt.crypt 來加密一個密碼, 將密碼和 salt組合起來然后傳遞給函數, 這里的 salt 包含兩位隨機字符.現在你可以扔掉原密碼而只保存加密后的字符串了.

# /usr/bin/python
# -*- coding:utf-8 -*-

import crypt
import random,string

def getsalt(chars = string.letters+string.digits):
    return random.choice(chars)+random.choice(chars)

salt = getsalt()
print salt
print crypt.crypt('bananas',salt)

 


免責聲明!

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



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