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. 提不起劲想赶紧完工 Scrum Meeting 博客汇总

    提不起劲想赶紧完工 Scrum Meeting 博客汇总 一.Alpha阶段 1,第一次Scrum Meeting 2,第二次Scrum Meeting 3,第三次Scrum Meeting 4,第四 ...

  2. 【动态规划】POJ-2229

    一.题目 Description Farmer John commanded his cows to search for different sets of numbers that sum to ...

  3. Internet History, Technology and Security (Week3)

    Week3. Welcome to week 3! This is our fourth and final week of History where we make the connection ...

  4. Node.js记录

    在智能社上听了一些关于node.js的视频,总结一小部分内容,都是总结老师讲的知识点,并且也是在不断学习的过程,所以会不断更新.也是为了怕自己遗忘一些知识点,同时现今没有什么项目可以让我去真正实践,这 ...

  5. Head First Java & 重载 覆盖

  6. Internet History, Technology and Security (Week 3)

    Week 3 History: The Web Makes it Easy to Use Welcome to week 3! This is our fourth and final week of ...

  7. XLSReadWriteII5使用示例

    之前一直是使用XLSReadWriteII4,今天更新到XLSReadWriteII5,测试了一下,发现一些操作变化比较大,现将XLSReadWriteII5的使用示例写一下,以下是代码和生成的exc ...

  8. cxGrid使用汇总

    1.自动行高:CellAutoHeight(单元自动高度)设置为True. procedure <AForm>.<AGridColumn>PropertiesValidate( ...

  9. 利用ceye中的dns来获取数据

    安恒杯的一道命令执行题目 查看,存在robots.txt文件 查看index.txt文件,存在where_is_flag.php文件 使用cat没有任何回显 可以使用ceye平台利用dns记录内容,网 ...

  10. Java中的多线程科普

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...