python hashlib加密实现代码


Posted in Python onOctober 17, 2019

用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA512,MD5算法。

以下是算法示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import hashlib
#=================MD5()加密=====================
hhb = hashlib.md5(bytes("jahiuhfdakj", encoding='utf-8')) #加盐处理
ret = hhb.update(bytes("123", encoding='utf-8'))  #“123”是需要加密的字符串
print("MD5加密:", hhb.hexdigest())


#=================SHA1()加密=====================
hhb = hashlib.sha1()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA1加密:", hhb.hexdigest())


#=================SHA224()加密=====================
hhb = hashlib.sha224()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA224加密:", hhb.hexdigest())

#=================SHA256()加密=====================
hhb = hashlib.sha256()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA256加密:", hhb.hexdigest())

#=================SHA512()加密=====================
hhb = hashlib.sha512()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA512加密:", hhb.hexdigest())

#=================SHA3_256()加密=====================
hhb = hashlib.sha3_256()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA3_256加密:", hhb.hexdigest())

#=================SHA3_384()加密=====================
hhb = hashlib.sha3_384()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA3_384加密:", hhb.hexdigest())

#=================SHA3_512()加密=====================
hhb = hashlib.sha3_512()
ret = hhb.update(bytes("123", encoding='utf-8'))
print("SHA3_512加密:", hhb.hexdigest())

算法示例的结果:

MD5加密: 113ccbcda570622489c183f6a6e0121e
SHA1加密: 40bd001563085fc35165329ea1ff5c5ecbdbbeef
SHA224加密: 78d8045d684abd2eece923758f3cd781489df3a48e1278982466017f
SHA256加密: a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
SHA512加密: 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
SHA3_256加密: a03ab19b866fc585b5cb1812a2f63ca861e7e7643ee5d43fd7106b623725fd67
SHA3_384加密: 9bd942d1678a25d029b114306f5e1dae49fe8abeeacd03cfab0f156aa2e363c988b1c12803d4a8c9ba38fdc873e5f007
SHA3_512加密: 48c8947f69c054a5caa934674ce8881d02bb18fb59d5a63eeaddff735b0e9801e87294783281ae49fc8287a0fd86779b27d7972d3e84f0fa0d826d7cb67dfefc

基于hashlib.md5()对密码进行加密实现用户登录验证的示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import hashlib
#基于MD5对密码进行加密实现用户登录验证

def md5(arg):
  """
  使用hashlib.md5()对密码进行加密处理
  :param arg: 需要加密处理的密码
  :return:
  """
  hash = hashlib.md5(bytes("我在学习python", encoding='utf-8')) #加盐,使用密码加密更有保障
  hash.update(bytes(arg, encoding='utf-8'))
  return hash.hexdigest()

def login(username, password):
  """
  用于用户登录验证
  :param username: 用户名
  :param password: 密码
  :return: True,登录成功;False,登录失败。
  """
  with open("user.txt", "r", encoding="utf-8") as f:
    for line in f:
      line = line.strip() #默认strip无参数,会去掉首尾空格、换行符;有参数则去除指定值
      line_list = line.split("|")  #以|符号提取用户名和密码
      if username == line_list[0] and md5(password) == line_list[1]:
        return True
      else:
        return False

def register(username, password):
  """
  用户注册
  :param username:用户名
  :param password:密码
  :return: True,注册成功
  """
  with open("user.txt", "a", encoding="utf-8") as f:
    temp = "\n" + username + "|" + md5(password)  # "\n"换行符
    f.write(temp)
  return True

def user_exsit(username):
  """
  注册时,判断用户名是否存在
  :param username:用户名
  :return:True, 用户名已存在
  """
  with open("user.txt", "r", encoding="utf-8") as f:
    for line in f:
      line = line.strip()
      line_list = line.split("|")
      if username == line_list[0]:
        return True
    return False

def main():
  print("欢迎您使用本系统,请输入你进行操作选项。")
  inp = input("1.登录;2.注册。请输入编号: ")
  if inp == "1":
    times = 1
    while True:
      if times == 4:
        print("输入3次用户名或密码不正确,请在一小时后再重试。")
        break
      user = input("请输入你的用户名:")
      pwd = input("请输入你的密码:")
      is_login = login(user, pwd)
      if is_login:
        print("恭喜您!系统登录成功。")
        break
      else:
        print("用户名或密码不正确。")
      times += 1
  if inp == "2":
    user = input("请输入你的用户名:")
    pwd = input("请输入你的密码:")
    if user_exsit(user):
      print("用户名已经存在,注册失败!")
    else:
      ret = register(user, pwd)
      if ret:
        print("注册成功!")
      else:
        print("注册失败!")

main()

加密后的user.txt的文件内容。

python hashlib加密实现代码

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

Python 相关文章推荐
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python sys.argv用法实例
May 28 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
使用python对excle和json互相转换的示例
Oct 23 Python
Python3 修改默认环境的方法
Feb 16 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python的几种主动结束程序方式
Nov 22 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
分析Python list操作为什么会错误
Nov 17 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 #Python
python模块常用用法实例详解
Oct 17 #Python
Python 使用元类type创建类对象常见应用详解
Oct 17 #Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 #Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 #Python
Python 3.8正式发布重要新功能一览
Oct 17 #Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 #Python
You might like
PHP的FTP学习(三)
2006/10/09 PHP
PHP用户指南-cookies部分
2006/10/09 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
在vscode中配置python环境过程解析
2019/09/28 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
外贸业务员工作职责
2014/01/06 职场文书
餐饮加盟计划书
2014/01/10 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
初三学习计划书范文
2014/04/30 职场文书
公司会议开幕词
2015/01/29 职场文书
教师个人培训总结
2015/02/11 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android