关于python中密码加盐的学习体会小结


Posted in Python onJuly 15, 2019

给密码加密是什么:用户注册的密码一般网站管理人员会利用md5方法加密,这种加密方法的好处是它是单向加密的,也就是说,你只有在提前知道某一串密码对应的md5加密码,才能反推出密码是多少,虽然有极小的几率可能造成两个密码加密之后的值相等(这种现象称为碰撞),不过基本上不用担心,因为概率是极低的。在常用的hashlib模块里还有sha1()等方法,它的本质和md5是一致的,只是产生的结果是160 bit字节,通常用一个40位的16进制字符串表示。而md5是最常见的加密算法,生成速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

给密码加盐是什么:见上面提到的,下面内容摘自百度百科,是对彩虹表的大概定义和解释,出于预先防止黑客利用彩虹表反推盗用用户的密码账户信息,就需要给密码加‘盐',其实简单来说,就是在hashlib模块中的md5加密方法时,传入一个你自己想给的盐,或者干脆随机生成(比较安全,将盐封装在类中)。

彩虹表是一个用于加密散列函数逆运算的预先计算好的表, 为破解密码的散列值(或称哈希值、微缩图、摘要、指纹、哈希密文)而准备。一般主流的彩虹表都在100G以上。 这样的表常常用于恢复由有限集字符组成的固定长度的纯文本密码。

md5和sha1加密介绍

import hashlib

md5=hashlib.md5()
md5.update('this is an example'.encode('utf-8'))
md5.update('again'.encode('utf-8')) #这里要记得update()方法可以多次调用,可以自己试一试。
print(md5.hexdigest())
#承接上面
sha1=hashlib.sha1()
sha1.update('this is an example'.encode('utf-8'))
sha1.update('...'.encode('utf-8'))
print(sha1.hexdigest())

下面利用md5加密和加盐的方法,实现简单的用户注册,将信息储存在字典中,然后模拟登陆。

#!/usr/bin/python3
#-*-coding:UTF-8-*-

import hashlib,random

#注册
storage={}

def registration(u,p):
  if u in storage:
    return 'username occupied.please choose another username...'
  else:
    storage[u]=Users(u,p)


#加密方法
def get_md5(s):
  return hashlib.md5(s.encode('utf-8')).hexdigest()

#登陆
class Users(object):
  def __init__(self,username,password):
    self.username=username #!!!!!!!注意盐是随机给的,每注册一个账号给一次盐,封装在Users类里面,在login函数里比较相等时,
    # a.salt是注册时封装好的盐,这时是固定的盐,所以只要账号密码对了就可以了。
    self.salt=''.join([chr(random.randint(48,122)) for i in range(20)])
    self.password=get_md5(password+self.salt)

def login(user,pw):
  if user not in storage.keys():
    return 'wrong username'
  else:
    a=storage[user]
    if a.password==get_md5(pw+a.salt):
      return 'succeeded'
    else:
      return 'wrong password'

registration('mary','12345')
registration('bob','aa895')
registration('kirk','ba155')
print(storage)
print(login('mary','12345'))

最重要是理解每一次的盐都封装好了,在login函数中,只要用户输入的密码+封装好的盐正确,即可实现登陆

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python之yield表达式学习
Sep 02 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
浅析python协程相关概念
Jan 20 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python爬取微信公众号文章
Aug 31 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python中json.dumps()函数的使用解析
May 17 Python
Python替换月份为英文缩写的实现方法
Jul 15 #Python
使用python爬取抖音视频列表信息
Jul 15 #Python
python过滤中英文标点符号的实例代码
Jul 15 #Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 #Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 #Python
如何利用Python模拟GitHub登录详解
Jul 15 #Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 #Python
You might like
PHP数据类型的总结分析
2013/06/13 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python分布式编程实现过程解析
2019/11/08 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
水果连锁超市创业计划书
2014/01/24 职场文书
文秘个人求职信范文
2014/04/22 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书