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中enumerate的用法实例解析
Aug 18 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python递归全排列实现方法
Aug 18 Python
Python字符串的一些操作方法总结
Jun 10 Python
python3实现高效的端口扫描
Aug 31 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
在keras下实现多个模型的融合方式
May 23 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 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
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
Python struct模块解析
2014/06/12 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python 读取修改pcap包的例子
2019/07/23 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
优质服务口号
2014/06/11 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
会计学习心得体会
2014/09/09 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2015年双拥工作总结
2015/04/08 职场文书
敬老院活动感想
2015/08/07 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android