这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

hashlib模块主要的作用:

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

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

hashlib_algorithms.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

# 始终可用的算法

print("始终可用的算法 : {}".format(sorted(hashlib.algorithms_guaranteed)))

print("需要结合OpenSSL可用算法 : {}".format(sorted(hashlib.algorithms_available)))

运行效果

[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加密算法(没有加盐)

hashlib_md5.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

md5_obj = hashlib.md5()

md5_obj.update("123456".encode("utf-8"))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5.py

e10adc3949ba59abbe56e057f20f883e

3、md5加密算法(加盐)

hashlib_md5_salt.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

salt = "1234"

md5_obj = hashlib.md5(salt.encode("utf-8"))

md5_obj.update("123456".encode("utf-8"))

print(md5_obj.hexdigest())

运行效果

[root@ mnt]# python3 hashlib_md5_salt.py

b38e2bf274239ff5dd2b45ee9ae099c9

4、sha1加密算法

hashlib_sha1.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

sha1_obj = hashlib.sha1()

sha1_obj.update("123456".encode("utf-8"))

print(sha1_obj.hexdigest())

hashlib_sha1.py

运行效果

[root@ mnt]# python3 hashlib_sha1.py

7c4a8d09ca3762af61e59520943dc26494f8941b

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

hashlib_new.py

#!/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())

运行效果

[root@ mnt]# python3 hashlib_new.py md5 123456

e10adc3949ba59abbe56e057f20f883e

[root@ mnt]# python3 hashlib_new.py sha1 123456

7c4a8d09ca3762af61e59520943dc26494f8941b

[root@ mnt]# python3 hashlib_new.py sha256 123456

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

[root@mnt]# python3 hashlib_new.py sha512 123456

ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

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

hashlib_update.py

#!/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)

运行效果

[root@ mnt]# python3 hashlib_update.py

一性次加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

一行一行加密结果 : 3f2fd2c9e25d60fb0fa5d593b802b7a8

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

python包mdure_Python hashlib模块实例使用详解相关推荐

  1. python hashlib_Python hashlib模块实例使用详解

    这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 hashlib模块主要的作用: 加密保 ...

  2. Python包管理工具PIP常用命令详解

    1. PIP安装 目前Python2.7.10以上版本和Python3.3以上版本都已经自带了setuptools及pip,因此不需要额外考虑安装pip,只需要在安装的时候配置好就可以使用. 2. P ...

  3. Python 包管理工具:pip 用法详解 + 常用pip指令

    pip 作为 python 包管理工具,在 python 引用第三方库的时候常常会使用到.那么 pip 怎么用呢,python 常用的 pip 指令有哪些?接下来这篇文章告诉你. 目录 阅前须知 第三 ...

  4. Python 中的json模块dumps参数详解

    1.什么是JSON 维基百科中的定义: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计.轻量级的资料交换语言,该 ...

  5. python的socket模块_Python socket模块方法实现详解

    这篇文章主要介绍了python socket模块方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 socket ssh (不带防止粘包的方 ...

  6. python线程池(threadpool)模块使用笔记详解

    这篇文章主要介绍了python线程池(threadpool)模块使用笔记详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近在做一个视频设备管理的项目,设备包括(摄像 ...

  7. python导入模块的变量_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 for ...

  8. 合法的python变量名import_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 imp ...

  9. python xlrd课程_python中xlrd模块的使用详解

    一.xlrd的安装 打开cmd输入pip install xlrd安装完成即可 二.xlrd模块的使用 下面以这个工作簿为例 1.导入模块 import xlrd 2.打开工作薄 # filename ...

最新文章

  1. 年仅 16 岁的黑客少年,竟是搅乱 IT 巨头的幕后主使?
  2. hdu 3068 最长回文(manacheramp;最长回文子串)
  3. 【转】select和epoll模型的差异
  4. 简述:B2B、B2C、C2C、O2O
  5. 为什么要在Java的Serializable类中使用SerialVersionUID
  6. LeetCode 676. 实现一个魔法字典(哈希)
  7. 西北工业大学计算机毕业论文,西北工业大学硕士论文开题报告应注意的事项
  8. 西门子触摸屏修改ip地址_基于博途V15 西门子S7-1200与触摸屏一个简单的例子
  9. Visual Web Developer 中的网站类型
  10. 通信网中的数据报子网和虚电路子网
  11. 条件随机场(CRF)小结
  12. 《Unix编程艺术》chm 电子书下载
  13. iis新建一个html文件路径,C#使用DirectoryEntry操作IIS创建网站和虚拟路径
  14. 批量获取图片中的某个点的像素值
  15. usb大容量储存设备感叹号?USB大容量存储设备无法启动
  16. 百度地图javascriptAPI点击地图得到坐标(拾取坐标)
  17. S3C2410 通用异步收发UART 串口通信
  18. 上海电信路由器有ipv6,电脑无法获取ipv6问题记录
  19. python数据挖掘(2.分类 OneR算法)
  20. Service Mesh对比:Istio与Linkerd

热门文章

  1. java读取空格_java 读取文件路径空格和中文的处理
  2. docker Harbor2.3.4 http 搭建镜像仓库
  3. Warning: Missing charsets in String to FontSet conversion
  4. linux 当前用户执行定时任务
  5. org.activiti.engine.ActivitiException: src-resolve: Cannot resolve the name 'extension' to a(n) 'ele
  6. JDBC出现这个错误的解决办法Connections could not be acquired from the underlying database!
  7. python ndarray append_9-Python-NumPy数组元素的添加与删除
  8. 移动场景在其缩略图中显示场景中所显示的区域
  9. 四则运算计算器c语言switch,设计一个五个数进行四则运算的计算器 c语言
  10. php 二维数组排序函数,php自定义函数实现二维数组排序功能