## 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. 《机器学习实战》之一:knn(python代码)

    数据 标称型和数值型 算法 归一化处理:防止数值较大的特征对距离产生较大影响 计算欧式距离:测试样本与训练集 排序:选取前k个距离,统计频数(出现次数)最多的类别 def classify0(inX, ...

  2. GC roots

    1.虚拟机栈(本地变量表)引用的对象 2.方法区静态属性引用的对象 3.方法区常量引用的对象 4.本地方法栈JNI(一般指naive方法)中引用的对象   常说的GC(Garbage Collecto ...

  3. 关于SQLserver2008索引超出了数据

    由于公司只支持了2008.不支持2012的数据库.所以安装的2008.但在对表进行操作的时候出现如下异常: 这个问题是由于本地装的2008,但IT那边的测试机上面确装的2012.所以2008连接了20 ...

  4. asp.net ajax get 调用(和post不一样,直接返回json才行,否则报错;post不能返回json)

    <script type="text/javascript" > $(document).ready(function () { $('#Label1').click( ...

  5. sql中的不常见查询

    1.对于CROSS APPLY 和 OUTER APPLY 的应用: CROSS APPLY 类似于INNER JOIN 但是,可以规定对于满足条件的数据需要关联几行,应用场景: 每个零件把第一个工单 ...

  6. FICO-初级会计学

    初级会计学 https://wenku.baidu.com/view/39257b1a59eef8c75fbfb348.html?from=search https://wenku.baidu.com ...

  7. Java JDK动态代理解析

    动态代理虽不常自己实现,但在Spring或MyBatis中都有重要应用.动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问.Spring常JDK和CGLIB动态代理 ...

  8. MySql日期与时间函数

    select DATE_FORMAT(date_sub(current_date(), interval 1 day), '%Y-%m-%d') -- 2018-05-29(昨天) select DA ...

  9. yarn安装及node升级

    ERROR: root@debian:/home/test/keygen-radio-master/scripts# npm install -g yarn npm WARN engine yarn@ ...

  10. 搭建redis-sentinel(哨兵机制)集群

    redis怎么才能做到高可用 对于redis主从架构,slave可以对应多个本身可以保障高可用,但是对于一个master节点,如果宕机,整个缓存系统就无法进行写的操作,显然整个系统会无法做到高可用 s ...