## md5算法简介
1.  **简介**
   MD5消息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
2.  **用途**
   * **一致性验证**   对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。
    MD5可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
   * **数字签名**   对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。(数字证书)
   * **安全访问认证**   密码加密存储
## Python中使用md5加密字符串
   MD5是hash算法的一种。
# 导入hash算法库
import hashlib
# 得到md5算法对象
hash_md5 = hashlib.md5()
# 准备要计算md5的数据(bytes类型)
data = '二进制数据'.encode('utf-8', errors='ignore')
# 计算
hash_md5.update(data)
# 获取计算结果(16进制字符串,32位字符)
md5_str = hash_md5.hexdigest()
# 打印结果
print(md5_str)
```
注意: md5算法在使用时,数据可以分多次传递给update方法。所以,如下代码的结果,和上面相同:
```python
# 导入hash算法库
import hashlib
# 得到md5算法对象
hash_md5 = hashlib.md5()
# 准备要计算md5的数据(bytes类型),第一部分
data1 = '二进制'.encode('utf-8', errors='ignore')
# 计算第一部分数据
hash_md5.update(data1)
# 准备要计算md5的数据(bytes类型),第二部分
data2 = '数据'.encode('utf-8', errors='ignore')
# 计算第一部分数据
hash_md5.update(data2)
# 获取计算结果(16进制字符串,32位字符)
md5_str = hash_md5.hexdigest()
# 打印结果
print(md5_str)
``` ## Python中使用md5算法获取文件MD5摘要
```python
# 导入hash算法库
import hashlib def file_md5sum(file_path):
'''计算文件md5值'''
# 得到md5算法对象
hash_md5 = hashlib.md5()
# 文件分块读取
chunk_size = 4096 # 4096 字节(4KB)
# 以二进制方式读文件
with open(file_path, "rb") as f:
# 获取分块数据(bytes),一次读取 chunk_size 个字节
chunk = f.read(chunk_size)
# 如果能读取到内容,就一直读取
while bool(chunk):
# 应用MD5算法,计算
hash_md5.update(chunk)
# 继续读
chunk = f.read(chunk_size)
# 返回计算结果(16进制字符串,32位字符)
return hash_md5.hexdigest() file_path = r'你的文件路径' # 改成自己的文件路径
file_md5_str = file_md5sum(file_path) # 计算给定路径的文件的md5
# 打印文件md5值
print(file_md5_str)
# 打印文件md5值(大写)
print(file_md5_str.upper())

Python MD5算法使用的更多相关文章

  1. python学习笔记(MD5算法)

    博主最近进度停滞了 对web开发理解欠缺好多内容 今天整理下MD5算法,这个涉及到mysql数据库存储用户表密码字段的时候 一般是带有加密的 # -*- coding: utf-8 -*- impor ...

  2. python常用算法学习(4)——数据结构

    数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...

  3. hashlib加密模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,HMAC消息签名(HMAC-SHA1,....)

    hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 MD5 摘要输出 # ...

  4. golang md5加密和python md5加密比较

    python md5加密和golang md5加密各有不同,记录于此做备忘 Python 方法 md5 import base64 import hashlib def get_md5_data(bo ...

  5. Python基础算法综合:加减乘除四则运算方法

    #!usr/bin/env python# -*- coding:utf-8 -*-#python的算法加减乘除用符号:+,-,*,/来表示#以下全是python2.x写法,3.x以上请在python ...

  6. md5算法

    md5算法 不可逆的:原文-->密文.用系统的API可以实现: 123456 ---密文 1987 ----密文: 算法步骤: 1.用每个byte去和11111111做与运算并且得到的是int类 ...

  7. MD5算法 简介

    MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. MD5功能 l 输入任 ...

  8. md5算法原理一窥(其一)

    首先,需要了解的事,md5并不是传说中的加密算法,只是一种散列算法.其加密的算法并不是我们说所的那样固定不变,只是一种映射的关系. 所以解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD ...

  9. Java利用MessageDigest提供的MD5算法加密字符串或文件

    MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了 ...

随机推荐

  1. ORACLE导出导入意外终止导致 ORACLE initialization or shutdown in progress 问题解决

    由于意外情况导致 ORACLE initialization or shutdown in progress 个人理解为主要是归档日志出现问题, 首先cmd 1.sqlplus /nolog  进入s ...

  2. python url监控 并邮件报警

    import timeimport requestsimport smtplibfrom email.mime.text import MIMETextimport datetime def Send ...

  3. centos7安装svn

    摘抄自http://blog.csdn.net/junehappylove/article/details/65963025 1.安装 sudo yum install subversion 查看安装 ...

  4. azkaban的简单使用

    简单使用 create job 右上角 project创建成功 创建job并上传至该project [root@localhost ~]# cat command.job #command.job t ...

  5. django settings多环境配置

    通常我们会把本地.线上的配置拆分,django不同环境的配置可如下: 1.在settings.py同级目录添加settings文件夹 2.把settings.py移到settings文件夹内,并重命名 ...

  6. Django05-模型系统model

    Object Relational Mapping(ORM) 一.ORM介绍 1.ORM概念对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关 ...

  7. 抢人就完事了——OO第二单元总结

    总结性博客作业 (1)从多线程的协同和同步控制方面,分析和总结自己三次作业的设计策略. (2)基于度量来分析自己的程序结构度量类的属性个数.方法个数.每个方法规模.每个方法的控制分支数目.类总代码规模 ...

  8. Docker镜像操作命令

    一.使用Docker镜像 1. 获取镜像 可以使用docker pull命令直接从Docker Hub镜像源来下载镜像.该命令的格式为docker pull NAME[:TAG].其中,NAME是镜像 ...

  9. 【400】numpy.pad 为数组加垫(迷宫类题目)

    参考:Numpy学习——数组填充np.pad()函数的应用 举例说明: import numpy as np a = np.zeros((3, 4), dtype=int) a array([[0, ...

  10. 虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件的安装

    虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件 搞了大半天才搞清楚装linux的前提是要先安装虚拟机的 先下载虚拟机,在然后创建虚拟机,在虚拟机里面再安装linu ...