Hashlib模块

Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似。

hashlib模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

使用方法如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/27 0027 16:09
# @Author : ming
import hashlib # MD5方式加密数据,一层加密
md5 = hashlib.md5() # 创建一个MD5的加密对象
md5.update(bytes("I am jack yang", encoding="utf-8")) # 要对那个字符串加密 就放在这里
print(md5.hexdigest()) # 拿到加密字符串
# 46d8cc5a97c734f140ebb122b54a9147 # 为了防止被撞库,可以在创建加密对象时加一个参数
md5 = hashlib.md5(bytes("yym", encoding="utf-8")) # 创建一个MD5的加密对象,并添加一个参数yym
md5.update(bytes("I am jack yang", encoding="utf-8")) # 要对那个字符串加密 就放在这里
print(md5.hexdigest()) # 拿到两层加密字符串
# 996bf846d82625d73c77f4a969b37edc # 如果字符串太长可以分开写
md5 = hashlib.md5(bytes("yym", encoding="utf-8")) # 创建一个MD5的加密对象,并添加一个参数yym
md5.update(bytes("I am ", encoding="utf-8")) # 要对那个字符串加密 就放在这里
md5.update(bytes("jack yang", encoding="utf-8")) # 要对那个字符串加密 就放在这里
print(md5.hexdigest()) # 拿到两层加密字符串
# 996bf846d82625d73c77f4a969b37edc

判断用户登录的小程序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/27 0027 16:09
# @Author : ming
import hashlib def User_information_reading():
"""
让用户输入用户名和密码,并且把密码进行MD5加密,加盐"hello"
:return: 返回一个右用户名和加密后的密码组成的键值对
"""
flag = True
while flag:
user_info = {} # 存储用户每次输入的信息
username = input("请输入用户名:")
password = input("请输入密码:")
if len(password) >= 8:
hash_md5 = hashlib.md5(bytes("hello", encoding="utf-8"))
hash_md5.update(bytes(password, encoding="utf-8"))
password_md5 = hash_md5.hexdigest()
user_info[username] = password_md5
flag = False
return user_info
else:
print("密码至少8位") def register():
"""
# 用户注册,把用户信息添加到用户数据库中
:return:
"""
user_info = User_information_reading() # 读取用户信息
user_db.append(user_info) # 添加到数据库中
return "注册成功" def login():
"""
判断用户登录
:return: True:登录成功 False:登录失败
"""
user_info = User_information_reading() # 读取用户信息
if user_info in user_db: # 判断用户信息在数据库中是否可以匹配
return "登录成功"
else:
return "登录失败" if __name__ == '__main__':
user_db = [] # 定义一个用户信息数据库
while True:
print("1、用户注册")
print("2、用户登录")
print("3、退出程序")
num = input("请选择:")
if num == "":
print(register())
elif num == "":
print(login())
elif num == "":
exit("\ngoodbye")
else:
exit("\ninput error")

python 模块之hashlib的更多相关文章

  1. python 模块之-hashlib

    python 模块hashlib import hashlib m=hashlib.md5()         # 生成MD5加密对象 m.update('jiami-string'.encode(' ...

  2. python模块学习 hashlib

    一.hashlib概述 涉及加密服务:14. Cryptographic Services 其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1.SHA224.SHA2 ...

  3. Python模块之hashlib模块、logging模块

    一.hashlib模块 hashlib模块介绍:hashlib这个模块提供了摘要算法,例如 MD5.hsa1 摘要算法又称为哈希算法,它是通过一个函数,把任意长度的数据转换为一个长度固定的数据串,这个 ...

  4. Python模块:hashlib

    hashlib:提供了常见的摘要算法,如MD5,SHA1等. import hashlib m = hashlib.md5() m.update('how to use md5 in python h ...

  5. python模块之hashlib模块

    hashlib模块:提供摘要算法 格式: hashlib格式: obj = hashlib.算法(md5,sha....) obj.update(摘要内容:bytes类型) result = obj. ...

  6. python模块之hashlib加密

    40.加密模块:hashlib      1.           >>> import hashlib >>> ret1 = hashlib.md5()     ...

  7. python模块之hashlib

    摘要算法 1. 摘要算法又称为哈希算法.散列算法,是通过函数将任意长度的数据转化成固定长度的数据串(通常用16进制的字符串表示). 2. 摘要算法将通过摘要函数f()将数据转化成固定长度的摘要(dig ...

  8. [转] python 模块学习 hashlib

    转自: http://www.cnblogs.com/BeginMan/p/3328172.html 一.hashlib概述 涉及加密服务:14. Cryptographic Services 其中 ...

  9. python之常用模块二(hashlib logging configparser)

    摘要:hashlib ***** logging ***** configparser * 一.hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法 ...

随机推荐

  1. Arithmatic项目修改总结

    Arithmatic项目修改总结 github仓库 arithmatic3.0 一. 修改介绍 修改后类图: 1.关于类的合并 ==可以发现相比右边(旧)的类,左边(新)的类少了很多,这是我这次大改的 ...

  2. PSP Daily软件beta版本——基于NABCD评论,及改进建议

    1.根据(不限于)NABCD评论作品的选题: 此软件的用户人群较为明确,即:用户(软件工程课上学生)记录例行报告.写每周PSP表格和统计的需求.潜在用户还有未来该课堂的学生和需要用PSP方法记录任务完 ...

  3. 实验三:敏捷开发与XP实践

    Java实验三报告 一.   实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Pro ...

  4. 【转】python 三种遍历list的方法

    [转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

  5. 第三周作业(三)WordCount

    这个程序主要就是统计一下文件中的字符数,单词数以及行数. 我的程序很简单,代码很简短,只实现了书中的基本功能. #include <stdio.h> #include <string ...

  6. windows 下升级安装mysql8,与旧版本5.6共存

    应开发需求,自mysql5.7开始引入json列类型和相关函数.为了提高数据读写的访问效率因此把数据库从mysql 5.6版升级到最新发行版 mysql 8.0.11 . 特此记录下多版本升级共存的过 ...

  7. markdown语法---根据使用不断扩充中

    markdown语法 标题 标题使用 #表示,几个#表示几级标题,最多六级标题. 斜体 使用 两个星号*括起来的文字是斜体字 这是斜体字 粗体 使用四个 * 号括起来的是粗体字. 这是粗体字 引用 这 ...

  8. 第219天:Angular---过滤器

    在Angular中,过滤器的功能主要是格式化数据表达式,且可以自定义过滤器.作用域(scope)主要服务于页面模板,在控制器和页面中起桥梁作用,保存模板中的数据对象,为模板中的元素提供方法和属性. 一 ...

  9. springboot学习笔记-3 整合redis&mongodb

    一.整合redis 1.1 建立实体类 @Entity @Table(name="user") public class User implements Serializable ...

  10. [POJ1704]Georgia and Bob 博弈论

    从这开始我们来进入做题环节!作为一个较为抽象的知识点,博弈论一定要结合题目才更显魅力.今天,我主要介绍一些经典的题目,重点是去理解模型的转化,sg函数的推理和证明.话不多说,现在开始! Georgia ...