參考部落格:
python中的用法:
>>>
import hashlib
>>> data = '123456'
>>> temp = hashlib.sha1(data)
>>> temp.hexdigest()
'7c4a8d09ca3762af61e59520943dc26494f8941b'
flask中的用法:
import hashlib
# 註冊網頁
deflogin
():if request.method == 'get': # 瀏覽器訪問
return render_template('main/ssb_login.html')
if request.method == 'post': # form提交處理邏輯
username = request.form['username']
pwd_temp = hashlib.sha1(request.form['password'])# sha1雜湊加密
password = pwd_temp.hexdigest()# sha1雜湊加密
checkcode = request.form['checkcode']
if isnameexist(username): # 使用者名稱已經存在
return
'namei***isted'
elif
not ischeckcode(checkcode): # 驗證碼不正確
return
'checkcodeerror'
else:
setnewadmin(username, password,checkcode)
return
'success'
python中用法:
>>>
import hashlib
>>> data = '123456'
>>> temp = hashlib.md5(data)
>>> temp.hexdigest()
'e10adc3949ba59abbe56e057f20f883e'
flask中的用法:
import hashlib
# 註冊網頁
deflogin
():if request.method == 'get': # 瀏覽器訪問
return render_template('main/ssb_login.html')
if request.method == 'post': # form提交處理邏輯
username = request.form['username']
pwd_temp = hashlib.md5(request.form['password'])# md5加密
password = pwd_temp.hexdigest()# md5加密
checkcode = request.form['checkcode']
if isnameexist(username): # 使用者名稱已經存在
return
'namei***isted'
elif
not ischeckcode(checkcode): # 驗證碼不正確
return
'checkcodeerror'
else:
setnewadmin(username, password,checkcode)
return
'success'
這個模組中主要是利用到兩個函式:
函式定義:
werkzeug.security.generate_password_hash(password, method='pbkdf2:sha1', salt_length=8)
引數說明:
salt_length:鹽值的長度,預設為8
加密之後的字串格式:
method$salt$hash
函式定義:
werkzeug.security
.check_password_hash(pwhash, 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)
defset_password
(self, password):
self.pw_hash = generate_password_hash(password)
defcheck_password
(self, password):
return check_password_hash(self.pw_hash, password)
>>> me = user('john doe', 'default')
>>> me.pw_hash
'sha1$z9wtkqam$7e6e814998ab3de2b63401a58063c79d92865d79'
>>> me.check_password('default')
true
>>> me.check_password('defaultx')
false
通常用法:
#雜湊加鹽的密碼加密方法
defenpassword
(password):
#將明密碼轉化為hash碼
return generate_password_hash(password)#返回轉換的hash碼
defcheckpassword
(enpassword,password):
#第一引數是從資料查詢出來的hash值,第二引數是需要檢驗的密碼
return check_password_hash(enpassword,password)#如果匹配返回true
#註冊新使用者
@main.route('/register', methods=['get', 'post'])
defregister
():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')#註冊完之後進入登入頁面
#登入使用者
@main.route('/signin', methods=['get', 'post'])
defsignin
():if request.method == 'get':
return render_template("user/login.html")
if request.method == 'post':
u = request.form['username']
p = request.form['password']
if isnameexisted(u):
t = checkpassword(u);#獲得資料庫儲存的hash值
if check_password_hash(t,p):#查詢有沒有這個使用者
session['logged_in'] = true
return redirect('/user/blog')
else:#沒有使用者就是新使用者那麼就轉入註冊頁面
return redirect('/register')
Flask成長筆記 在Flask中加密的方式
參考部落格 一 利用python自帶的hashlib庫實現加密 1 sha1加密 python中的用法 import hashlib data 123456 temp hashlib.sha1 data temp.hexdigest 7c4a8d09ca3762af61e59520943dc2649...
Flask成長筆記 Flask框架的目錄配置
flask框架的目錄配置是經常用到的,我會使用乙個config.py來作為所有目錄位址的配置檔案。1 呼叫os.path.dirname 函式獲取應用根目錄 encoding utf 8 import os dirname os.path abspath file 定義乙個應用的根目錄2 呼叫os....
flask成長記(二)
蝸牛真的是蝸牛啊,就jinja2這麼個東西也抽象的暫且理解不了。不過也真是,你弄那麼複雜幹什麼啊?說的裝逼的。這麼理解jinja2這個東西 先把引擎這倆字兒拋開。一般情況下,會有你提交給伺服器東西,伺服器存入到資料庫和伺服器返回給使用者資料這兩個操作。模板是用在後面這個返回給使用者這個操作。你總不可...