Flask成長筆記 在Flask中加密的方式

2021-08-04 10:05:57 字數 4325 閱讀 4787

參考部落格:

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這個東西 先把引擎這倆字兒拋開。一般情況下,會有你提交給伺服器東西,伺服器存入到資料庫和伺服器返回給使用者資料這兩個操作。模板是用在後面這個返回給使用者這個操作。你總不可...