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. 5-Perl 变量

    1.Perl 变量变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间.解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型.浮点型.字符串等.上一章 ...

  2. flume收集日志直接sink到oracle数据库

    因为项目需求,需要保存项目日志.项目的并发量不大,所以这里直接通过flume保存到oracle 源码地址:https://github.com/jaxlove/fks/tree/master/src/ ...

  3. 【原创】大叔经验分享(63)kudu vs parquet

    一 对比 存储空间对比: 查询性能对比: 二 设计方案 将数据拆分为:历史数据(hdfs+parquet+snappy)+ 近期数据(kudu),可以兼具各种优点: 1)整体低于10%的磁盘占用: 2 ...

  4. Pr PS 笔记

    1. 保存窗口配置    窗口-新建工作区 2. 添加快捷键  编辑-自定义快捷键 3. 添加关键帧,需要下拉轨道 4. 关闭PR声音 5. 视频稳定器 选中素材,右键选择嵌套,嵌套后在子序列把视频画 ...

  5. 封装好的Ajax

    /* 注意: 1.检查提交方式类型:get/post是否和后台一致(该类型接口文档会标注,若一致仍然报错,请与后台再次确认) 2.检查接口url是否写错 3.检查接口是否需要传数据到后台,若需上传,便 ...

  6. 移动端iOS点击闪烁

    移动端iOS点击闪烁 1. $("#id").bind("touchstart click",function(e){ 2. e.stopPropagation ...

  7. easyui-datagrid 编辑模式详解——combobox

    用于列表显示号了,需要改动某一列的值,而且根据每一行的数据去加载data数据,放在这个列中供别人选择 //-------------------- 代码可变区//---------- 数据定义区var ...

  8. C# 使用Quartz.Net

    //首先在Nuget上下载 Quartz包 但是由于我睿智Nuget 怎么也没法用 于是找到了这个 解决方法: 1.点击右侧的设置按钮, 2.弹出窗中左侧树形结构选择“程序包源”,再点击右上方的添加按 ...

  9. 利用fadeTo改变元素的不透明度代码

    有很多的图片网站中有这样的一种效果:鼠标划过某个元素的时候,与他同级的其他元素的透明度会降低,突出显示这个元素,比如聚美优品的网站就多少用到了这个特效,效果图如下: 不多说,干货代码如下: html部 ...

  10. Tomcat项目自动部署脚本

    一般情况下使用的Linux环境都是加固的,root路径只有超级管理员权限才能进入.我们新建一个自己的用户,在/home下会有一个用户目录,传输war包都放在这个目录下,此时不动webapps文件下的内 ...