參考部落格:
一、利用python自帶的hashlib庫實現加密
1、sha1加密
python中的用法:
>>> import hashlib
>>> data = '123456'
>>> temp = hashlib.sha1(data)
>>> temp.hexdigest()
'7c4a8d09ca3762af61e59520943dc26494f8941b'12
3456
flask中的用法:
import hashlib12
3456
78910
1112
1314
1516
1718
1920
2、md5加密
python中用法:
>>> import hashlib
>>> data = '123456'
>>> temp = hashlib.md5(data)
>>> temp.hexdigest()
'e10adc3949ba59abbe56e057f20f883e'12
345flask中的用法:
import hashlib12
3456
78910
1112
1314
1516
1718
1920
二、利用flask中的werkzeug.security模組加密
這個模組中主要是利用到兩個函式:
(1)密碼生成函式:generate_password_hash
(2)密碼驗證函式:check_password_hash
1、密碼生成函式:generate_password_hash
函式定義:
werkzeug.security.generate_password_hash(password, method='pbkdf2:sha1', salt_length=8)
引數說明:
password:明文密碼
method:雜湊加密的方法(需要hashlib庫支援的),格式為pdpdf2:[:iterations]
method:雜湊的方式,一般為sha1
iterations:(可選引數)迭代次數,預設為1000
salt_length:鹽值的長度,預設為8
加密之後的字串格式:
method$salt$hash12
2、密碼驗證函式:check_password_hash
函式定義:
werkzeug.security.check_password_hash(pwhash, password)
引數定義:
pwhash:generate_password_hash生成的雜湊字串
password:需要驗證的明文密碼
check_password_hash函式用於驗證經過generate_password_hash雜湊的密碼
。若密碼匹配,則返回真,否則返回假。
用法:oop用法:
from werkzeug.security import generate_password_hash,check_password_hash
class user(object):
def __init__(self, username, password):
self.username = username
self.set_password(password)
def set_password(self, password):
self.pw_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.pw_hash, password)12
3456
78910
1112
13>>> me = user('john doe', 'default')
>>> me.pw_hash
'sha1$z9wtkqam$7e6e814998ab3de2b63401a58063c79d92865d79'
>>> me.check_password('default')
true
>>> me.check_password('defaultx')
false12
3456
7通常用法:
#雜湊加鹽的密碼加密方法
def enpassword(password):#將明密碼轉化為hash碼
return generate_password_hash(password)#返回轉換的hash碼
def checkpassword(enpassword,password):#第一引數是從資料查詢出來的hash值,第二引數是需要檢驗的密碼
return check_password_hash(enpassword,password)#如果匹配返回true12
3456
#註冊新使用者
@main.route('/register', methods=['get', 'post'])
def register():
if request.method == 'get':
return render_template("user/register.html")
if request.method == 'post':
u = request.form['username']
p = enpassword(request.form['password'])
email = request.form['email']
adduser(u,p,email)
return redirect('/signin')#註冊完之後進入登入頁面
Flask成長筆記 在Flask中加密的方式
參考部落格 python中的用法 import hashlib data 123456 temp hashlib.sha1 data temp.hexdigest 7c4a8d09ca3762af61e59520943dc26494f8941b flask中的用法 import hashlib 註冊...
Flask成長筆記 Flask框架的目錄配置
flask框架的目錄配置是經常用到的,我會使用乙個config.py來作為所有目錄位址的配置檔案。1 呼叫os.path.dirname 函式獲取應用根目錄 encoding utf 8 import os dirname os.path abspath file 定義乙個應用的根目錄2 呼叫os....
flask成長記(二)
蝸牛真的是蝸牛啊,就jinja2這麼個東西也抽象的暫且理解不了。不過也真是,你弄那麼複雜幹什麼啊?說的裝逼的。這麼理解jinja2這個東西 先把引擎這倆字兒拋開。一般情況下,會有你提交給伺服器東西,伺服器存入到資料庫和伺服器返回給使用者資料這兩個操作。模板是用在後面這個返回給使用者這個操作。你總不可...