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中atexit模块的基本使用示例
Jul 08 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
python操作redis方法总结
Jun 06 Python
python3 property装饰器实现原理与用法示例
May 15 Python
python实现批量视频分帧、保存视频帧
May 31 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python实现名片管理系统
Feb 14 Python
Python while true实现爬虫定时任务
Jun 08 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 Python
pytorch显存一直变大的解决方案
Apr 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
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
js document.write()使用介绍
2014/02/21 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
iview form清除校验状态的实现
2019/09/19 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
详解javascript脚本何时会被执行
2021/02/05 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
python 写的一个爬虫程序源码
2016/02/28 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
Python 如何创建一个线程池
2020/07/28 Python
python脚本第一行如何写
2020/08/30 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
数组越界问题
2015/10/21 面试题
专业实习自我鉴定
2013/10/29 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
PHP基本语法
2021/03/31 PHP
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
MySQL多表查询机制
2022/03/17 MySQL