## 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. bzoj4025二分图(线段树分治 并查集)

    /* 思维难度几乎没有, 就是线段树分治check二分图 判断是否为二分图可以通过维护lct看看是否链接出奇环 然后发现不用lct, 并查集维护奇偶性即可 但是复杂度明明一样哈 */ #include ...

  2. 4-HBase

    定义: HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Goog ...

  3. Ubuntu忘记超级用户root密码,重新设置密码

    Ubuntu版本:Ubuntu 16.04.3 LTS 1启动系统,在启动过程中,反复按Esc键或者shift键(本人亲测反复按或者长按都可以,没必要纠结),直到出现以下界面: 通过上下键移动,选择U ...

  4. centos mysql 默认是区分大小写的,修改成不区分大小写

    修改mysql为不区分大小写设置: [root@test-huanqiu ~]# vim /etc/my.cnf //添加下面一行设置 .... [mysqld] lower_case_table_n ...

  5. eclipse启动tomcat正常,但是debug启动报错FATAL ERROR in native method:JDWP No transports initialized,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport error 202: connect failed:Connection timed out

    FATAL ERROR in native method:JDWP No transports initialized,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(19 ...

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

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

  7. if判断,switch语句

    if ; else if; else; 判断操作: 格式示例: public class scanner { public static void main(String[] args){ int a ...

  8. JS防抖与节流函数封装

    防抖 在监听scroll事件的时候经常会用到防抖,当滚动到某一位置而触发状态,从而不会出现频繁滚动持续触发事件的情况 防抖的事件处理机制仅触发一次且必须是结束状态下才会执行 function debo ...

  9. python 打开文件基础 (笔记)

    1.打开文件:建立文件与程序的关联 open(filenname,mode) filenname:文件名(包括路径):mode :打开模式 模式 打开模式 含义 r 只读,文件不存在则报错 w 只写, ...

  10. Java学习--枚举

    枚举类型enum,地位等同于class,interface 使用enum定义的枚举类型,也是一种变量类型,可用于声明变量 枚举的一些特征 1.它不能有public的构造函数,这样做可以保证客户代码没有 ...