Python字符串hashlib加密模块使用案例


Posted in Python onMarch 10, 2020

主要用于对字符串的加密,最常用的为MD5加密:

import hashlib
def get_md5(data):
  obj = hashlib.md5()
  obj.update(data.encode('utf-8'))
  result = obj.hexdigest()
  return result
val = get_md5('123') #这里放入要加密的字符串文字。
print(val)
#简便的写法:
pwd = input('请输入密码:').encode('utf-8')
result = hashlib.md5(pwd).hexdigest()
#加盐写法:
import hashlib
date = 'hahahah'
ojb = hashlib.md5((date+'123123123').encode('utf-8')).hexdigest()
print(ojb)

如果要避免撞库的行为,可以加盐将加密数值改为更加复杂的,这样破译起来更加不容易。 

import hashlib
def get_md5(data):
  obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
  obj.update(data.encode('utf-8'))
  result = obj.hexdigest()
  return result
val = get_md5('123') #这里放入要加密的字符串文字。
print(val)

案例:

说明:用户输入新建的用户名和密码,以MD5加密的形式存入文件中。再让用户输入用户名密码进行匹配。

#!/usr/bin/env python
# _*_ coding=utf-8 _*_
import hashlib
def get_md5(data):
  '''
  登录加密,将传入的密码进行加密处理,并返回值。
  :param data: 用户的密码
  :return: 返回MD5加密后的密码
  '''
  obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
  obj.update(data.encode('utf-8'))
  result = obj.hexdigest()
  return result
def seve_user(username,password):
  '''
  将加密后的密码和用户名进行保存,以| 来分割,文件为test.txt
  :param username: 需要创建的用户名
  :param password: MD5后的密码
  :return: 需要更改的地方,return判断是否保存成功。
  '''
  user_list = [username,get_md5(password)]
  lis = '|'.join(user_list)
  with open('test.txt',encoding='utf-8',mode='a')as f:
    f.write(lis+'\n')
def read_user(username,password):
  '''
  来判断用户登录所输入的用户名和是否正确。
  :param username: 用户输入的用户名
  :param password: MD5加密后的密码
  :return: 如果匹配返回True
  '''
  with open('test.txt',mode='r',encoding='utf-8') as f:
    for item in f:
      infomation = item.strip()
      user,pwd = infomation.split('|')
      if username == user and password == pwd:
        return True
while True:
  '''
  循环需要创建的用户
  '''
  user =input('请输入用户名:')
  if user.upper() == 'N':
    break
  pwd = input('请输入密码:')
  if len(user) and len(pwd) < 8:
   print('用户名密码不符合要求,请重新输入。')
  else:
    seve_user(user,pwd)
while True:
  '''
  循环用户登录
  '''
  user_name = input('请输入用户名:')
  password = input('请输入密码:')
  start_user = read_user(user_name,get_md5(password))
  if start_user:
    print('登录成功')
    break
  else:
    print('登录失败')

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

Python 相关文章推荐
使用Python导出Excel图表以及导出为图片的方法
Nov 07 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
如何基于Python按行合并两个txt
Nov 03 Python
Python打包exe时各种异常处理方案总结
May 18 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
python 详解turtle画爱心代码
Feb 15 Python
Python中求对数方法总结
Mar 10 #Python
Python标准库shutil模块使用方法解析
Mar 10 #Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 #Python
Python 生成VOC格式的标签实例
Mar 10 #Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 #Python
python opencv 检测移动物体并截图保存实例
Mar 10 #Python
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
详解Python编程中time模块的使用
2015/11/20 Python
Unicode和Python的中文处理
2017/03/19 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
python opencv实现证件照换底功能
2019/08/19 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
厂长岗位职责
2014/02/19 职场文书
怀念母亲教学反思
2014/04/28 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
工作失职自我检讨书
2015/05/05 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL