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 selenium鼠标键盘操作(ActionChains)
Apr 12 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
django实现前后台交互实例
Aug 07 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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
一个很不错的PHP翻页类
2009/06/01 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
jquery实现穿梭框功能
2021/01/19 jQuery
初学python数组的处理代码
2011/01/04 Python
python复制文件代码实现
2013/12/23 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python迭代用法实例教程
2014/09/08 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
Python 实现链表实例代码
2017/04/07 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
html5录音功能实战示例
2019/03/25 HTML / CSS
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
学校司机岗位职责
2013/11/14 职场文书
档案接收函
2014/01/13 职场文书
金融管理应届生求职信
2014/02/20 职场文书
社区交通安全实施方案
2014/03/22 职场文书
超市客服工作职责
2014/06/11 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
安全教育的主题班会
2015/08/13 职场文书
学习党史心得体会2016
2016/01/23 职场文书
求职自我评价参考范文
2019/05/16 职场文书