这里的原因是因为数据库中存储密码,如果直接存储md5安全性还并不是高。

一般会在表中增加salt,也就是加点盐,和真实密码进行某种聚合。也就是:

数据库中的密码=随机密码+用户输入的密码,进行某种算法聚合的

如下数据库中的表:

这个login_salt就是和真实密码聚合然后把杂交后的密码放到login_pwd中。

生成login_salt相关代码如下:

和真实密码混合生成的最后存储到数据库的字符串:

相关代码如下:

import random, string, hashlib, base64class UserService:@staticmethoddef genePwd(pwd, salt):m = hashlib.md5()       #获得md5算法对象str = "%s-%s" % (base64.encodebytes(pwd.encode("utf-8")), salt)m.update(str.encode("utf-8"))return m.hexdigest()@staticmethoddef geneSalt(length = 16):keyList = [random.choice(string.ascii_letters + string.digits) for i in range(length)]return "".join(keyList)

controller端相关代码:

@member_page.route("/reg", methods = ["GET", "POST"])
def reg():if request.method == "GET":return render_template("member/reg.html")req = request.valuesnickname = req['nickname'] if "nickname" in req else ""login_name = req['login_name'] if "login_name" in req else ""login_pwd = req['login_pwd'] if "login_pwd" in req else ""login_pwd2 = req['login_pwd2'] if "login_pwd2" in req else ""..................model_user = User()model_user.login_name = login_namemodel_user.nickname = nickname if nickname is not None else login_namemodel_user.login_salt = UserService.geneSalt(8)model_user.login_pwd = UserService.genePwd(login_pwd,model_user.login_salt)model_user.created_time = model_user.updated_time = getCurrentTime()db.session.add(model_user)db.session.commit()return ops_renderJSON(msg = "注册成功")

SQL笔记-用户表中增加salt属性与真实密码聚合存储相关推荐

  1. sql server 数据库表中增加列,增加字段,插入列,插入字段,修改列,修改字段,

    格式 --增加列 alter table 表名 add 字段名 类型 null default 默认值--给列增加注释 execute sp_addextendedproperty 'MS_Descr ...

  2. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  3. SQL Server数据表中数据的增加(插入)、查询、修改、删除

    目录 零.码仙励志 一.数据表中数据的增加(插入) 二.数据表中数据的查询 三.数据表中数据的修改 四.数据表中数据的删除 零.码仙励志 伟人所达到并保持着的高处,并不是一飞就到的,而是他们在同伴们都 ...

  4. SQL在表中增加一列

    语法: alter table 表名 add 列明 数据类型; 举例: 在Uni表中增加continent列. 代码: alter table Uni add continent nvarchar(5 ...

  5. columnproperty server sql_导出SQL Server数据库表中字段的说明/备注

    时 间:2013-02-18 09:09:11 作 者:摘 要:导出SQL Server数据库表中字段的说明/备注 正 文: 打开SQL企业管理器 ,找到你要导出用户表字段信息的那个数据库 ,点击工具 ...

  6. 利用T-SQL处理SQL Server数据库表中的重复行

    Duplicate rows in a SQL Server database table can become a problem. We will see how we can find and ...

  7. Sql查询一个表中除了某个字段以外的所有字段的方法

    declare @name varchar(100) declare @sql varchar(1000)SET @sql='select ' DECLARE C11 CURSOR FORselect ...

  8. 用一条sql语句删除表中所相同记录

    用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...

  9. 用MS SQL 语句修改表中字段类型

    [问题]用SQL 语句判断表中是否存在password字段,不存在则新增字段,若存在password字段,把字段的类型由int 类型改为text类型. [实现方法] if exists( select ...

最新文章

  1. Redis实现消息队列
  2. 推荐给c++学习者的经典
  3. iOS7以下设备获取mac地址
  4. -ms-,-moz-,-webkit-,-o-含义及各浏览器内核整理
  5. nyoj1057寻找最大数3
  6. python正则匹配表达式(1)
  7. java c混合编程 linux_linux下C与C++混合编程
  8. Python+tkinter+sqlite3模拟通信录管理系统
  9. 计算机应用基础165791,人大网大计算机应用基础试题答案资料.doc
  10. 【渝粤教育】国家开放大学2018年秋季 1117t机电控制与可编程序控制 参考试题
  11. 关于readonly修饰符
  12. linux chmod 命令理解
  13. MySql数据库级别MD5加密java MD5加密解密工具包
  14. 主板rgb接口是什么_什么是主板?
  15. G: LZY的计算器
  16. 推荐阅读蔡颖先生新作-APS走向实践
  17. android模拟按键方法,Android随笔之——模拟按键操作的几种方式
  18. 《Windows-Program:Win32/Contebrew.A!ml 病毒》
  19. hdu 2197 本原串 思维
  20. ftp服务器文件传输,FTP服务器之间传输文件

热门文章

  1. apacheBench对网站进行压力测试
  2. 创业编程七个错误认识
  3. 三款博客备份下载软件
  4. 可能是最强大的【CSS】动画库
  5. C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
  6. 它是那么的渺小freeeim
  7. 联想将推出全新系列笔记本
  8. 献给汇编初学者-函数调用堆栈变化分析
  9. 亲密接触VC6.0编译器
  10. 编程技术分享,程序员小技巧,程序员小伙伴们,你们用到了多少