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回调函数的使用方法
Jan 23 Python
Python生成随机验证码的两种方法
Dec 22 Python
基于pip install django失败时的解决方法
Jun 12 Python
flask 实现token机制的示例代码
Nov 07 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
python井字棋游戏实现人机对战
Apr 28 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
django之session与分页(实例讲解)
2017/11/13 Python
python对常见数据类型的遍历解析
2019/08/27 Python
python3正则模块re的使用方法详解
2020/02/11 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2014年党小组工作总结
2014/12/20 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL