哈希密碼的使用


                     

   哈希密碼(Password Hash):

 

        對口令進行一次性的加密處理而形成的雜亂且永不重復的字符串。這個加密的過程被認為是不可逆的,也就是說,人們認為從哈希串中是不可能還原出原口令的。(這句話是比較官方的解釋)。   
          
        白話點說就是:當我們在注冊賬號密碼的時候,需要用到,Password  Hash 會將我們注冊的密碼進行一次加密處理。然后當我們做登錄操作的時候,會進行一次解密處理去和我們輸入的密碼匹配。
    
    
   在Flask中的使用:
        
     1.導包
1
# 導包         from werkzeug.security   import  generate_password_hash, check_password_hash

 其中:  generate_password_hash 是生成密碼     ;       

check_password_hash 是密碼驗證

而在django中也有自帶的加密方式  make_password

  2. 注冊賬號的時候用到     generate_password_hash 

1
2
3
4
5
@admin_blue .route( 'add_user' )
defadd_user():       # Adminuser是數據庫中一張表的名字 , user:注冊的賬號    pass_hash: 注冊的密碼,此時注冊的密碼的是 123
   add_user = Adminuser(user = 'admin' ,pass_hash = generate_password_hash( '123456' ))
   db.session.add(add_user)
    return 'OK'

  此時我們注冊的密碼是“123456”,當我們用到  generate_password_hash  將“123456”加密的時候,數據庫里面就變成:

 

  3. 我們既然已經完成了注冊,就輪到登錄,當我們登錄的時候,在輸入密碼的時候,就需要用到 check_password_hash來解密,進而來驗證密碼

復制代碼
# 登錄
@admin_blue.route('/login',methods=['get','post'])
def login():
    if request.method=='POST':
        name=request.form.get('name')
        psw=request.form.get('psw')
        if not all([username,password]):
            flash('請輸入賬號和密碼')
        else:
            sqluser=Adminuser.query.filter(Adminuser.user==name).first()
            if not sqluser:
                flash('賬號不正確')
            else:
                p=check_password_hash(sqluser.pass_hash,psw)
                print(a)
                if p:
                       session['admin_username']=name
                       return redirect(url_for('admin.index'))
                else:
                       flash('密碼不正確')
    return render_template('admin/login.html')
復制代碼

 


免責聲明!

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



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