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

2021-09-10 07:58:21 字數 2953 閱讀 1688

參考部落格:

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