用于加密相关的操作,代替了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. 【Mac+Android+uiautomatorviewer】之报错:Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException

    安卓8.0以后uiautomatorviewer会报错,解决办法如下: 参考:<android 8.0 以后 uiautomator 无法直接使用的问题> 步骤一: 先执行命令:(注意:想 ...

  2. Java | Spring Boot Swagger2 集成REST ful API 生成接口文档

      Spring Boot Swagger2 集成REST ful API 生成接口文档 原文 简介 由于Spring Boot 的特性,用来开发 REST ful 变得非常容易,并且结合 Swagg ...

  3. NP完全问题的证明

    目录 NP完全问题的证明 一.限制法 最小覆盖问题(VC) 子图同构问题 0-1背包(Knapsack) 三元集合的恰当覆盖(X3C) 集中集 有界度的生成树 多处理机调度 二.局部替换法 3SAT问 ...

  4. 微信小程序路径表达式解析规则

    小程序 setData 方法支持路径表达式来设置属性,例如 setData({"x.y.z": 1}). 微信官方没有公布路径表达式的语法规则及解析规则,本文所描述的路径表达式解析 ...

  5. (一)将mockjs集成到VUE中后,怎样根据接口入参返回mock结果

    1)安装mockjs,这一步跳过 2)在项目中建立mock模块,笔者的目录结构如下 mock模块与接口模块一一对应,有一个接口,就有一个mock 3)编写登陆模块mock接口,代码如下: import ...

  6. 高性能MYSQL(查询优化)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. Python列表(list)所有元素的同一操作

    针对很普遍的每个元素的操作会遍历每个元素进行操作. 这里给出了几种写法,列表每个元素自增等数学操作同理: 示例:整形列表ilist加1个数.元素类型转字符串: ilist = [1, 2, 3, 10 ...

  8. ubuntu开发常用收集

    命令: 1.http://blog.csdn.net/simongeek/article/details/45271089 2.http://www.jianshu.com/p/654be9c0f13 ...

  9. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

  10. 基于elementUI创建的vue项目

    这周对公司的内容使用vue进行重构,所以记录一下开始项目的过程 下载elementUI: 项目文件夹中在命令行中输入:npm install elementui -s 下载完成后在 main.js 中 ...