• 哈希密码的使用


                         

       哈希密码(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')
    复制代码
  • 相关阅读:
    第1章 游戏之乐——NIM(3)两堆石头的游戏
    NFS介绍和安装
    shell脚本删除N天前的目录-----附linux和mac上date命令的不同
    关于子线程更新UI
    WIN7下安装SVNserver端及client搭建协作环境
    Selenium_WebDriver登录模拟鼠标移动切换窗体等操作练习(cssSelector初练手)_Java
    UICollectionView具体解释
    局域网使用的IP地址范围
    hdu 2955 Robberies
    POJ 1661 Help Jimmy(DP,注意边界)
  • 原文地址:https://www.cnblogs.com/liang715200/p/10565056.html
Copyright © 2020-2023  润新知