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脚本处理空格的方法
Aug 08 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
python 反向输出字符串的方法
Jul 16 Python
python实现抖音点赞功能
Apr 07 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
python爬虫之遍历单个域名
Nov 20 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python编写函数注意事项总结
Mar 29 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 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
session 的生命周期是多长
2006/10/09 PHP
自动跳转中英文页面
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
浅谈Python 递归算法指归
2019/08/22 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Python高级property属性用法实例分析
2019/11/19 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
三严三实民主生活会发言稿
2014/10/13 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
就业推荐表导师评语
2014/12/31 职场文书
讲座通知范文
2015/04/23 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
python语言中pandas字符串分割str.split()函数
2022/08/05 Python