用于加密相关的操作,代替了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. Linux命令中service的用法

    用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等.相关的命令还包括chkconfig.ntsysv等,c ...

  2. Sitecore安全:访问权限

    由于Sitecore使用Core数据库中的项来定义其用户界面,因此您可以对该数据库中的项应用访问权限,以控制对CMS功能的访问.最常见的是,将用户置于预定义的Sitecore客户端角色中 Siteco ...

  3. Maven安装及配置(Linux系统)

    环境说明:Linux环境,CentOS 7版本. 第一步:下载Maven,地址:http://maven.apache.org/download.cgi 我这里下载的是[apache-maven-3. ...

  4. Java学习:等待唤醒机制

    等待唤醒机制 线程的状态 NEW   至今尚未启动的线程处于这种状态 RUNNABLE   正在Java虚拟机中执行的线程处于这种状态 BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态 WA ...

  5. Kafka Internals: Consumers

    Check out my last article, Kafka Internals: Topics and Partitions to learn about Kafka storage inter ...

  6. springmvc处理json数据

    springMVC提供了处理JSON格式请求/响应的HttpMessageConverter MappingJckson2HttpMessageConverter利用Jackson开源类包处理JSON ...

  7. Java 之 日期时间类

    一.Date类 1.概述 java.util.Date 类 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) p ...

  8. JavaScript 之 String 对象

    String 对象 之前学习的是 基本数据类型 String 类型,现在讨论的是 String对象(包装类型). String的特点:字符串的不可变性. var str = 'abc'; str = ...

  9. XenServer三类快照

    三种类型的 VM 快照: 1.常规快照:仅创建磁盘快照,可以在所有 VM 类型(包括 Linux VM)上执行.还原快照会重启虚拟机 2.静态快照:生成虚拟机磁盘快照,生成快照前使 VM 静止.仅限于 ...

  10. tp5 宝塔open_basedir restriction in effect 错误; IIS open_basedir restriction in effect

    很久前做过的一个微信项目,客户突然找到我说换了部署环境后网站报错,再跟客户确定了php版本,伪静态设置后,网站依旧打不开,官网手册这样解释: 然而因为客户是iis8的表示该文档一点鸡毛用都米有哇,求助 ...