用于加密相关的操作,代替了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("", encoding='utf-8')) #“123”是需要加密的字符串
print("MD5加密:", hhb.hexdigest()) #=================SHA1()加密=====================
hhb = hashlib.sha1()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA1加密:", hhb.hexdigest()) #=================SHA224()加密=====================
hhb = hashlib.sha224()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA224加密:", hhb.hexdigest()) #=================SHA256()加密=====================
hhb = hashlib.sha256()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA256加密:", hhb.hexdigest()) #=================SHA512()加密=====================
hhb = hashlib.sha512()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA512加密:", hhb.hexdigest()) #=================SHA3_256()加密=====================
hhb = hashlib.sha3_256()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA3_256加密:", hhb.hexdigest()) #=================SHA3_384()加密=====================
hhb = hashlib.sha3_384()
ret = hhb.update(bytes("", encoding='utf-8'))
print("SHA3_384加密:", hhb.hexdigest()) #=================SHA3_512()加密=====================
hhb = hashlib.sha3_512()
ret = hhb.update(bytes("", 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 == "":
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 == "":
user = input("请输入你的用户名:")
pwd = input("请输入你的密码:")
if user_exsit(user):
print("用户名已经存在,注册失败!")
else:
ret = register(user, pwd)
if ret:
print("注册成功!")
else:
print("注册失败!") main()

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

python-hashlib加密的更多相关文章

  1. python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐

      python hashlib模块   hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...

  2. 【转】python模块分析之hashlib加密(二)

    [转]python模块分析之hashlib加密(二) hashlib模块是用来对字符串进行hash加密的模块,明文与密文是一一对应不变的关系:用于注册.登录时用户名.密码等加密使用.一.函数分析:1. ...

  3. Python常用模块之hashlib(加密)

    Python常用模块之hashlib(加密) Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据import ha ...

  4. 关于python hashlib模块的使用

    hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法 #!/usr/bin/ ...

  5. python hashlib、configparse、logging

    一.hashlib 1.Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等.     2.摘要算法 通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目 ...

  6. hashlib 加密 与进度条

    # 加密 ''' md5 = hashlib.md5() md5.update('how to use md5 in python hashlib?') #字节才可以 print md5.hexdig ...

  7. python RSA加密、解密、签名

    python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...

  8. Python hashlib加密模块

    hashlib模块 简介: hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sha ...

  9. python实现加密的方式总结

    python实现加密的方式总结 原文地址 目录 基础知识扫盲 Base64 MD5 DES 3DES AES RSA 基础知识扫盲 对称加密 对称密钥加密 , 又叫私钥加密.即信息发送的方和接受方用一 ...

  10. python hashlib 详解

    1.概述 摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...

随机推荐

  1. DotnetSpider爬虫简单示例 net core

    文章地址 https://blog.csdn.net/sD7O95O/article/details/78097556 安装爬虫框架  NUGET 安装DotnetSpider 创建HTTP协议数据包 ...

  2. C# 填充客户端提交的值到T对象

    /// <summary>      /// 填充客户端提交的值到 T 对象  如appinfo = AppConvert.To<Appinfo>(context.Reques ...

  3. AnimationClip压缩-动画文件压缩

    动画压缩方法一.常用方法1. Rig->Animation Type:改为Generic2. Animations->Anim.Compression:Optimal二.高级方法1. 去掉 ...

  4. 几分钟打造超级好看又好用的zsh command line环境

    source: https://www.pexels.com/photo/office-working-app-computer-97077/ 注:这篇适用于用MAC 开发的developer 身为程 ...

  5. DevExpress之GridControl控件小知识

    DevExpress之GridControl控件小知识 一.当代码中的DataTable中有建数据关系时,DevExpress 的 GridControl 会自动增加一个子视图 .列名也就是子表的字段 ...

  6. jsp,servlet文件上传问题完善

    1. 上传文件时文件名中文乱码 upload.setHeaderEncoding("utf-8"); 有个疑惑: 不管设置不设置都不乱码,但是刘帅龙老师讲的时候出现了乱码 . 2. ...

  7. 函数内this指向+排序+找出数组大小项+Math类

    解决函数内this指向: 1,可以在函数外提前声明变量 _this/that = this 2,通过apply()和call()来修改函数内的this指向 二者区别: 用法是一样的,参数形式不一样 f ...

  8. 在ZYNQ上裸机跑ARM程序的演示

    今天给大家演示如何在ZYNQ上,裸机跑ARM程序,本测试用的是米尔Z-turn Board单板,测试代码用的XILINX官方的C语言测试程序,用于测试挂接在ARM总线上的设备是否正常,并在串口终端打印 ...

  9. JavaScript 之 页面加载事件

    一.onload 加载事件 onload 是 window 对象的一个事件,也可以省略 window 直接使用. 常用方式: <head><script> windown.on ...

  10. 微信小程序分页加载列表

    1.假设加载的数据为 2.wxml <view class="page"> <view class="page__bd"> <vi ...