核对两个文件是否相同,一般都使用MD5,而sha1是用于进行数据加密使用。(使用方法一样,就是md5改成sha1)

主要用于对字符串的加密,最常用的为MD5加密:

import hashlib

def get_md5(data):
obj = hashlib.md5()
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
val = get_md5('123') #这里放入要加密的字符串文字。
print(val)
#简便的写法:
pwd = input('请输入密码:').encode('utf-8')
result = hashlib.md5(pwd).hexdigest()
#加盐写法:
import hashlib
date = 'hahahah'
ojb = hashlib.md5((date+'123123123').encode('utf-8')).hexdigest()
print(ojb)
import hashlib

md5 = hashlib.md5()
md5.update('Hello'.encode())
print(md5.hexdigest()) md5 = hashlib.md5()
md5.update('He'.encode())
md5.update('llo'.encode())
print(md5.hexdigest()) #这两个结果是一样的。不过update多少次。只要数据不变,那么都是一样的

如果要避免撞库的行为,可以加盐将加密数值改为更加复杂的,这样破译起来更加不容易。 

import hashlib

def get_md5(data):
obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
val = get_md5('123') #这里放入要加密的字符串文字。
print(val)

案例:

说明:用户输入新建的用户名和密码,以MD5加密的形式存入文件中。再让用户输入用户名密码进行匹配。

#!/usr/bin/env python
# _*_ coding=utf-8 _*_
import hashlib
def get_md5(data):
'''
登录加密,将传入的密码进行加密处理,并返回值。
:param data: 用户的密码
:return: 返回MD5加密后的密码
'''
obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8')) #这里加盐
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
def seve_user(username,password):
'''
将加密后的密码和用户名进行保存,以| 来分割,文件为test.txt
:param username: 需要创建的用户名
:param password: MD5后的密码
:return: 需要更改的地方,return判断是否保存成功。
'''
user_list = [username,get_md5(password)]
lis = '|'.join(user_list)
with open('test.txt',encoding='utf-8',mode='a')as f:
f.write(lis+'\n')
def read_user(username,password):
'''
来判断用户登录所输入的用户名和是否正确。
:param username: 用户输入的用户名
:param password: MD5加密后的密码
:return: 如果匹配返回True
'''
with open('test.txt',mode='r',encoding='utf-8') as f:
for item in f:
infomation = item.strip()
user,pwd = infomation.split('|')
if username == user and password == pwd:
return True
while True:
'''
循环需要创建的用户
'''
user =input('请输入用户名:')
if user.upper() == 'N':
break
pwd = input('请输入密码:')
if len(user) and len(pwd) < 8:
print('用户名密码不符合要求,请重新输入。')
else:
seve_user(user,pwd)
while True:
'''
循环用户登录
'''
user_name = input('请输入用户名:')
password = input('请输入密码:')
start_user = read_user(user_name,get_md5(password))
if start_user:
print('登录成功')
break
else:
print('登录失败')

Python——hashlib(加密模块)的更多相关文章

  1. Python hashlib加密模块

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

  2. python: hashlib 加密模块

    加密模块hashlib import hashlib m=hashlib.md5() m.update(b'hello') print(m.hexdigest()) #十六进制加密 m.update( ...

  3. python模块知识三 hashlib 加密模块、collections、re模块

    8.hashlib 加密模块 ​ 主要用于加密和校验 常见密文:md5,sha1,sha256,sha512 只要明文相同,密文就相同 只要明文不相同,密文就是不相同的 不能反逆(不能解密)--md5 ...

  4. python 基础(十七)--hashlib加密模块

    hashlib加密模块 两种方式使用 字符串是中文时需要先编码成utf-8 常用加密算法:md5,sha1(已被破解)等... >>> a= hashlib.md5() >&g ...

  5. hashlib加密模块和logging模块,购物车项目

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

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

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

  7. python的加密模块(md5,sha,crypt)学习

    python的加密模块(md5,sha,crypt)学习 命令行使用python MD5: yinguicai@Cpl-IBP-Product:~/data/work/svn/v1.4.0_dev/A ...

  8. hashlib加密模块

    python hashlib密码加密   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dss_dssssd/article/details/828 ...

  9. python hashlib、configparse、logging

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

  10. hashlib加密模块,加密方式:(MD5,sha级别)

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

随机推荐

  1. centos 安装最新版git

    对个人而言,gitlab有点浪费资源,占内存太大,一个博客服务器,配置比较低,用gitlab太浪费了.(公司使用gitlab,这个适合公司团队使用) 前提条件,放行git端口,防火墙添加放行规则,将3 ...

  2. Hive开启mapjoin优化、并行执行、动态分区

    1. mapjoin优化适合小表join大表 set hive.optimize.skewjoin=true; //有数据倾斜时开启负载均衡,默认false set hive.auto.convert ...

  3. HDU3853 LOOPS 期望DP基础题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题目大意(只是大意,名字什么的可能和原题描述不一样~): 爱丽丝与华容道 题目描述 爱丽丝是一个 ...

  4. 安装 KVM

    安装 KVM 需要的包 sudo apt-get install -y qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan ...

  5. 【计算机视觉】基于局部二值相似性模式(LBSP)的运动目标检测算法

    基于局部二值相似性模式(LBSP)的运动目标检测算法 kezunhai@gmail.com http://blog.csdn.net/kezunhai 本文根据论文:Improving backgro ...

  6. [US Open 2004][luogu2342] 叠积木 [带权并查集]

    题面 洛谷传送门 思路 害 学了4年多OI,第一次知道还有带权并查集这个东西 wtcl 这个玩意儿的原理和详细实现,可以参考这个博客:带权并查集传送门 这道题,就是在带权并查集的基础上,加个维护每个集 ...

  7. TCP/IP学习笔记11--无线通信: 无线通信的种类, 点对点通信协议

    IEEE802委员会主要指定了以下几种分类: PAN: personal aera network;  LAN: local area network; WAN: wide aera network ...

  8. [转帖]什么是UWB?UWB有什么用?

    什么是UWB?UWB有什么用? https://www.sohu.com/a/224891573_531173 小米碰传 就是 UWB吧? 2018-03-05 17:02 UWB在早期被用来应用在近 ...

  9. [转帖]商用数据库之死:Oracle 面临困境

    商用数据库之死:Oracle 面临困境 投递人 itwriter 发布于 2019-10-20 08:22 评论(1) 有238人阅读 原文链接 [收藏] « » https://news.cnblo ...

  10. JWT知识整理

    JSON Web Token:(https://jwt.io/) JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-co ...