hashlib模块主要的作用:

  加密保护消息安全,常用的加密算法如MD5,SHA1等。

1、查看可用的算法有哪些

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib # 始终可用的算法
print('始终可用的算法 : {}'.format(sorted(hashlib.algorithms_guaranteed)))
print('需要结合OpenSSL可用算法 : {}'.format(sorted(hashlib.algorithms_available)))

hashlib_algorithms.py

运行效果

[root@ mnt]# python3 hashlib_algorithms.py
始终可用的算法 : ['blake2b', 'blake2s', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']
需要结合OpenSSL可用算法 : ['DSA', 'DSA-SHA', 'MD4', 'MD5', 'RIPEMD160', 'SHA', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512', 'blake2b', 'blake2s', 'dsaEncryption', 'dsaWithSHA', 'ecdsa-with-SHA1', 'md4', 'md5', 'ripemd160', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256', 'whirlpool']

 2、md5加密算法(没有加盐)

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib md5_obj = hashlib.md5()
md5_obj.update(''.encode('utf-8'))
print(md5_obj.hexdigest())

hashlib_md5.py

运行效果

[root@ mnt]# python3 hashlib_md5.py
e10adc3949ba59abbe56e057f20f883e

 3、md5加密算法(加盐)

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib salt = ''
md5_obj = hashlib.md5(salt.encode('utf-8'))
md5_obj.update(''.encode('utf-8'))
print(md5_obj.hexdigest())

hashlib_md5_salt.py

运行效果

[root@ mnt]# python3 hashlib_md5_salt.py
b38e2bf274239ff5dd2b45ee9ae099c9

 4、sha1加密算法

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib sha1_obj = hashlib.sha1()
sha1_obj.update(''.encode('utf-8'))
print(sha1_obj.hexdigest())

hashlib_sha1.py

运行效果

[root@ mnt]# python3 hashlib_sha1.py
7c4a8d09ca3762af61e59520943dc26494f8941b

 5、按加密算法名字进行动态加密(即hashlib.new(‘算法名字’))

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib
import argparse lorem = 'Hello World' parser = argparse.ArgumentParser('hashlib Demo')
parser.add_argument(
'hash_name',
choices=hashlib.algorithms_available,
help='请输入hashlib的名字'
) parser.add_argument(
'data',
nargs='?',
default=lorem,
help='请输入要加密的数据'
) args = parser.parse_args()
h = hashlib.new(args.hash_name)
h.update(args.data.encode('utf-8'))
print(h.hexdigest())

hashlib_new.py

运行效果

[root@ mnt]# python3 hashlib_new.py md5
e10adc3949ba59abbe56e057f20f883e [root@ mnt]# python3 hashlib_new.py sha1
7c4a8d09ca3762af61e59520943dc26494f8941b [root@ mnt]# python3 hashlib_new.py sha256
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 [root@mnt]# python3 hashlib_new.py sha512
ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

6、大文件切片md5加密算法

#!/usr/bin/env python
# -*- coding: utf-8 -*- import hashlib content = '''Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.''' #一次性加密:缺点文件大的话,加载到内存会导致内存溢出
h = hashlib.md5()
h.update(content.encode('utf-8'))
all_at_once = h.hexdigest() #利用生成器,切片加密,对大文件加密有用
def chunkize(size, text):
start = 0
while start < len(text):
chuck = text[start:start + size]
yield chuck
start += size
return #一行一行加密
h = hashlib.md5()
for chunk in chunkize(64,content.encode(('utf-8'))):
h.update(chunk)
line_by_line = h.hexdigest() print('一性次加密结果 : ',all_at_once)
print('一行一行加密结果 : ',line_by_line)

hashlib_update.py

运行效果

[root@ mnt]# python3 hashlib_update.py
一性次加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8
一行一行加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

Python之hashlib模块的使用的更多相关文章

  1. 《Python》hashlib模块、configparser模块、logging模块

    一.hashlib模块 Python的hashlib模块中提供了常见的摘要算法,如md5,sha1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的字符串(通 ...

  2. python中hashlib模块用法示例

    python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...

  3. 通过python的hashlib模块计算一个文件的MD5值

    Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值 ...

  4. Python中hashlib模块

    介绍hashlib hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. ...

  5. python基础--hashlib模块

    hashlib模块用于加密操作,代替了md5和sha模块, 主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. # -*- coding:utf-8 - ...

  6. python(6)- hashlib模块

    加密算法: SHA1,SHA224, SHA256, SHA384, SHA512 , MD5 1. md5 import hashlib m = hashlib.md5() m.update(b&q ...

  7. python的hashlib模块

    # -*- coding: utf-8 -*- """python 的MD5 sha1 模块""" import hashlib #md5的 ...

  8. python之hashlib模块(MD5校验)

    示例:大文件md5校验 def md5(fileMd5): import hashlib md5_value = hashlib.md5() with open(fileMd5,'rb') as f: ...

  9. Python之hashlib模块

    hashlib 在做一个授权管理系统,需要生产动态生成密码,故使用hashlib >>> import time >>> import hashlib >&g ...

随机推荐

  1. 初识numpy库

    numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于在大型.多维数组上执行数值运算 numpy创建数组(矩阵): numpy中的数据类型: ...

  2. OpenCV-图像处理

    直方图比较方法-概述 对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间 然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进 而比较图像本身的相似程度.Opencv提供的比 ...

  3. GukiZ and Binary Operations CodeForces - 551D (组合计数)

    大意: 给定$n,k,l,m$, 求有多少个长度为$n$, 元素全部严格小于$2^l$, 且满足 的序列. 刚开始想着暴力枚举当前or和上一个数二进制中$1$的分布, 但这样状态数是$O(64^3)$ ...

  4. cent0S 设置静态ip

    TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static # static ip,#BOOTPROTO=dhcp # dynamic ...

  5. C#面向对象15 多态

    多态 概念:让一个对象能够表现出多种的状态(类型) 实现多态的3种手段:1.虚方法 2.抽象类 3.接口 1.虚方法 步骤:1.将父类的方法标记为虚方法,使用关键字 virtual,这个函数可以被子类 ...

  6. winfrom_根据checkbox勾选项增减dgv字段列

    1.效果: 2.点击‘配置’按钮: private void btn_configure_Click(object sender, EventArgs e) { string sum = string ...

  7. c# word excel text转html的方法

    首先是预览图片,这个功能很好实现,无非就是创建一个html页面,嵌套一个<img>,为了限制图片类型,可以定义一个允许预览类型数组作为限制: /// <summary> /// ...

  8. 服务端相关知识学习(六)Zookeeper client

    Zookeeper的client是通过Zookeeper类提供的.前面曾经说过,Zookeeper给使用者提供的是一个类似操作系统的文件结构,只不过这个结构是分布式的.可以理解为一个分布式的文件系统. ...

  9. 第二十五篇 jQuery 学习7 获取并设置 CSS 类

    jQuery 学习7 获取并设置 CSS 类   jQuery动态控制页面,那么什么是动态呢?我们就说一下静态,静态几乎又纯html+css完成,就是刷新页面之后,不会再出现什么变动,一个实打实的静态 ...

  10. hadoop 中ALL Applications 中Tracking 下History查找不到MapReduce Job 日志

    运行一个Map Reduce job 想查看日志: 点击History ,找不到网页 解决办法如下: 1.其中有一个进程是需要启动的: Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行 ...