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之重回函数
Oct 10 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
Python实现Selenium自动化Page模式
Jul 14 Python
python中列表的切片与修改知识点总结
Jul 23 Python
python实现XML解析的方法解析
Nov 16 Python
Python ArgumentParse的subparser用法说明
Apr 20 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
Python基于unittest实现测试用例执行
Nov 25 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
教你怎么用Python监控愉客行车程
Apr 29 Python
Python OpenGL基本配置方式
May 20 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Mac 上切换Python多版本
2017/06/17 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
python -v 报错问题的解决方法
2020/09/15 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
2015年化妆品销售工作总结
2015/05/11 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
python迷宫问题深度优先遍历实例
2021/06/20 Python
flex弹性布局详解
2022/03/20 HTML / CSS
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技