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各种语言间时间的转化实现代码
Mar 23 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
详解pandas的外部数据导入与常用方法
May 01 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
Python 画出来六维图
Jul 26 Python
python 命令行传入参数实现解析
Aug 30 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
python时间time模块处理大全
Oct 25 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
javascript cookies操作集合
2010/04/12 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python中pygame模块用法实例
2014/10/09 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
对python中list的五种查找方法说明
2020/07/13 Python
基于python实现坦克大战游戏
2020/10/27 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
邮政员工辞职信
2014/01/16 职场文书
代领毕业证委托书
2014/08/02 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers
Go语言怎么使用变长参数函数
2022/07/15 Golang