Python之hashlib模块的使用
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模块的使用的更多相关文章
- 《Python》hashlib模块、configparser模块、logging模块
一.hashlib模块 Python的hashlib模块中提供了常见的摘要算法,如md5,sha1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的字符串(通 ...
- python中hashlib模块用法示例
python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...
- 通过python的hashlib模块计算一个文件的MD5值
Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值 ...
- Python中hashlib模块
介绍hashlib hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. ...
- python基础--hashlib模块
hashlib模块用于加密操作,代替了md5和sha模块, 主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. # -*- coding:utf-8 - ...
- python(6)- hashlib模块
加密算法: SHA1,SHA224, SHA256, SHA384, SHA512 , MD5 1. md5 import hashlib m = hashlib.md5() m.update(b&q ...
- python的hashlib模块
# -*- coding: utf-8 -*- """python 的MD5 sha1 模块""" import hashlib #md5的 ...
- python之hashlib模块(MD5校验)
示例:大文件md5校验 def md5(fileMd5): import hashlib md5_value = hashlib.md5() with open(fileMd5,'rb') as f: ...
- Python之hashlib模块
hashlib 在做一个授权管理系统,需要生产动态生成密码,故使用hashlib >>> import time >>> import hashlib >&g ...
随机推荐
- 【LOJ】#3095. 「SNOI2019」字符串
LOJ#3095. 「SNOI2019」字符串 如果两个串\(i,j\)比较\(i < j\),如果离\(a_{i}\)最近的不同的数是\(a_{k}\),如果\(j < k\)那么\(i ...
- ARTS 第一周打卡
Algorithm : 做一个 leetcode 的算法题 1.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算 ...
- Linux就该这么学——新手必须掌握的命令之文件目录管理命令组
touch命令 用途 : 用于创建空白文件或设置文件的时间 格式 : touch [选项] [文件] 参数 作用 -a 仅修改”读取时间”(atime) -m 仅修改”修改时间”(mtime) -d ...
- vue 评论 computed watch 分隔符 局部组件 全局组件 子传父消息|父传子消息
评论案例 splice: (start 几位,替换(新增)内容) splice(0,0,内容)在头部插入内容 splice(0,1) 把索引为0的往后删除1位 splice(0,1,内容)把索引为0 ...
- Elastic Search中Query String常见语法
1 搜索所有数据timeout参数:是超时时长定义.代表每个节点上的每个shard执行搜索时最多耗时多久.不会影响响应的正常返回.只会影响返回响应中的数据数量.如:索引a中,有10亿数据.存储在5个s ...
- day05-06
day05 上传下载 下载工具软件: lrzsz 安装方法: yum install lrzsz -y 下载命令就是sz 上传命令就是rz 下载到widow实列 sz 文件名 上传到linux 执行r ...
- 一致性算法—Paxos、Raft、ZAB
一致性算法—Paxos.Raft.ZAB 2019年04月21日 20:35:09 bulingma 阅读数 64更多 分类专栏: 分布式概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...
- Laravel 实现多级控制器(实现Api区分版本)
路由: Route::get('', 'v1\\UserController@index'); 文件夹分层 User控制器命名空间: namespace App\Http\Controllers\v1 ...
- global.css
global.css /* 页面元素初始化和常用样式定义-start */ /*======== 全局 ========*/ body, div, dl, dt, dd, ul, ol, li, h1 ...
- Pycharm开发环境设置与熟悉
Pycharm开发环境设置与熟悉. 练习基本输入输出: print('你好,{}.'.format(name)) uprint(sys.argv) 库的使用方法: import ... from .. ...