MD5算法:利用python进行md5 hash值的获取

news2025/1/21 14:08:45

MD5基本概念

MD5,即信息摘要算法,英文为MD5 Message-Digest Algorithm,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),也叫散列值,用于确保信息传输完整一致。
它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串,这个特殊的字符串就被称之为摘要。

MD5的作用

通常用于校验一组数据是否被篡改。例如,校验一个文件是否被篡改。

MD5特点及现状:

1)、hash值长度固定。它是一段固定长度的数据,即16个字节(128bit)。无论原始数据是多长或多短,其MD5值都是128bit。

2)、通常,计算出来的md5值包含0~9和大小写字母a ~ f, 以及A ~ F的32位可见字符。即将128bit的数据打印输出时,是一个32位的字符串。(因为直接输出16bytes的数据,是乱码,不可见)。

3)、hash值的确定性,一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值。

4)、碰撞性,原始数据与其MD5值并不是一一对应的,有可能多个原始数据计算出来的MD5值是一样的,这就是碰撞。

5)、不可逆。即由已知的MD5值,无法还原出它的原始数据的。当然,很多网站可以查询md5的原始数据,是因为事先已经保存了数以万计的原始数据以及它的hash值,我们查询时,只是进行已知数据的查询匹配。

由于hash算法是不可逆的, 所以不存在解密的逻辑。

6)、不安全。由于md5无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

7)、我国著名教授王小云已经破解了包括MD5、SHA-1在内的5个国际通用哈希函数算法。

MD5值的获取:

很多平台自带md5值的获取,例如,可以用下面的命令计算一个文件的md5值:

% md5 urlinfo.json 
MD5 (urlinfo.json) = e58b910fda6a2aed3d00fde20a28c0a7

MD5值的获取:python代码:

1、 不加盐(salt)的md5值

利用python获取md5值的代码如下:

from hashlib import md5

obj = md5()
obj.update("hello python!!!".encode("utf-8"))

bs = obj.hexdigest()
print(bs)

运行结果:

% python3 md5_test.py
ffd986dc69195bd6c1397a76e0df6cc4

用在线网站进行md5值的获取:
在这里插入图片描述
可以看到,和我们用python算出的结果一样。

2、 加盐(salt)的md5值

from hashlib import md5
salt = "aabbccddeeff"
obj = md5(salt.encode("utf-8"))  # 加盐
obj.update("hello python!!!".encode("utf-8"))

bs = obj.hexdigest()
print(bs)

运行结果:

% python3 md5_test.py
355d1341087e44f53551293193fd706c

3、 扩展sha256的md5值

from hashlib import sha1, sha256
sha = sha256(b'salt')
sha.update(b'hello python!!!')
print(sha.hexdigest())

运行结果:

python3 md5_test.py
24d50be77cb3d092520041983964d9f5daa8962c19f4fb6318bd2764406aab64

说明:不论是sha1, sha256, md5都属于摘要算法.,都是在计算hash值(散列值),只是散列的程度不同而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Live800:不做背锅侠,在线客服系统有帮助

一个公司最牛的部门是哪个? 不同的公司可能有不同的答案,但要说公司哪个部门最憋屈,承接客户的炮火最多,那一定是客服部。因为无论是产品的质量、物流、使用出了问题,消费者的负向反馈都会轰向客服,而当客…

中低压分布式电源并网方案(RCL0923群调群控协同控制终端/RCL0923A分布式光伏逆变器数据采集器)方案

中低压分布式电源并网方案(RCL0923群调群控协同控制终端/RCL0923A分布式光伏逆变器数据采集器)方案 中低压分布式电源并网方案(RCL0923群调群控协同控制终端/分布式光伏逆变器数据采集器)方案 RCL0923分布式光伏电源群调群控协调控制终端/分布式光伏逆变器数据采集器 方案一…

Kotlin基本的语法学习

1.变量 在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在…

操作系统:用C语言模拟先进先出的算法(FIFO)、最久未使用算法(LRU)、改进的Clock置换算法的命中率。

2.1 实验目的 通过请求页面式存储管理中页面置换算法设计,了解存储技术的特点,掌握请求页式存储管理的页面置换算法。 2.2 实验内容 用程序实现生产者——消费者问题,将指令序列转换为用户虚存中的请求调用页面流。 具体要求: …

以太坊的ecrecover预编译合约

1. 引言 前序博客: ECDSA VS Schnorr signature VS BLS signature ECDSA,全称为Elliptic curve Digital Signature Algorithm,采用Elliptic curve cryptography来实现的数字签名算法。 公私钥对(pk,P)(pk,P)(pk,P),其中公钥Pp…

阿里云-数据仓库-全链路大数据开发治理平台-DataWorks的数字世界

一、前言 上文我讲到 阿里云-数据仓库-数据分析开发神器-ODPS ,今天我带领大家一起走进神器的成长环境及它的数据世界。 二、 DataWorks是什么 DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎,为数据仓库、数据湖、湖仓一体等…

大数据-压缩与打包

一、gzip命令 1、选项参数 参数作用-c(compress)将压缩的数据输出到标准输出(stdout)上-d(decompress)解压缩-t(test)可以用来检验一个压缩文件的一致性,看看文件有无错…

艾美捷甘油比色测定试剂盒-简单,敏感,高效

艾美捷甘油比色测定试剂盒,利用双酶联反应系统来检测血清和血浆中的甘油的含量.最后用酶标仪在540nm处测吸光度值即可. 甘油是甘油三酯的骨架,是参与氧化和合成过程的能量代谢的重要中间体。甘油和游离脂肪酸循环水平的测量被认为反映了脂肪分解&#xf…

快应用的优势与劣势对比

2018年,“快应用”标准正式推出。快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验。 快应用框架深度集成进各厂商手机系统中,可以在操作系统层面实现用户需求与应用…

艾美捷甘油比色测定试剂盒基本参数和相关文献说明

背景: 哺乳动物中,甘油三脂主要储存在脂肪组织中,作为主要的能量储存仓库.当禁食阶段,存储在肝脏和脂肪组织中的甘油三酯被脂肪酶分解形成脂肪酸和甘油. 艾美捷甘油比色测定试剂盒基本参数: 中文名称:甘油…

dpdk中的librte_malloc库

dpdk中的librte_malloc库提供了能够分配任意大小内存的API。 该库的目标是提供类似malloc的函数从hugepage中分配内存,以及帮助应用程序移植。 通常情况下,这种类型的分配不应该在数据平面处理,因为其比基于内存池的分配更慢, …

网站被反诈中心DNS劫持解决教程

如果你的网站部分地区用户访问反馈访问不了,测试域名DNS被劫持到了127.0.0.1 或 0.0.0.0 可能是域名被墙了,或则被反诈中心拦截了,如果遇到该问题,需要检测单单被运营商拦截还是也有被反诈中心拦截。 排查过程: 可以把问题域名通过…

H5 雪碧图 移动的机器猫

精灵图(英语:Sprite),又被称为雪碧图或拼合图。在计算机图形学中,当一张二维图像 集成进场景中,成为整个显示图像的一部分时,这张图就称为精灵图。 本文中用的就是这张,来自爱给网。…

Python:Flask简介与实践

文章目录简介一、简单使用二、调试模式三、路由四、路径变量五、构造URL六、HTTP方法七、静态文件八、模板生成九、日志输出十、处理请求1. Request 对象十一、文件上传十二、Cookies十三、重定向和错误十四、响应处理十五、Sessions十六、模板简介1. 模板标签2. 继承3. 控制流…

超高精度PID控制器的特殊功能(2)——远程操作软件及其安装使用

摘要:远程控制软件是高级PID调节器随机配备的一种计算机软件,可在计算机上远程进行调节器的所有操作,并还具有过程曲线显示和存储功能。本文主要针对VPC 2021系列超高精度PID控制器,介绍了随机配备的控制软件的安装和一些最基本的…

2022-12-21 Buildroot创建自己的软件包,把一个c应用编译到系统里面去运行

一、Buildroot 编译完成后&#xff0c;会在 /buildroot/output/xxxx/host/ 目录下&#xff0c;生成交叉编译工具&#xff0c;我们可以用来编译目标程序。 1、比如我现在要编译下面的c文件 #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[…

分布式是大数据处理的万能药?

前言&#xff1a;分布式是大数据处理的万能药&#xff1f;今天叶秋学长跟大家一起探讨这个问题~ 使用分布式集群来处理大数据是当前的主流&#xff0c;将一个大任务拆分成多个子任务分布到多个节点进行处理通常能获得显著的性能提升。因此&#xff0c;只要发现处理能力不足就可…

人数超员识别系统 yolov5

人数超员识别系统基于计算机视觉分析技术yolov5网络架构对现场画面实时分析&#xff0c;如监测到区域超员时&#xff0c;立刻抓拍存档并告警提示。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度与精度都得到了…

Java日志技术是什么

文章目录日志技术日志技术介绍日志技术体系日志技术 日志技术介绍 想清楚的知道一个系统运行的过程和详情就需要日志记录 日志介绍: 生活中的日志&#xff1a; 生活中的日志就好比日记&#xff0c;可以记录你生活的点点滴滴。 程序中的日志&#xff1a; 程序中的日志可以用来记…

04---springboot实现增删改查

1、配置文件 application.yml server:port: 8081 spring:mvc:path match:matching-strategy: ant_path_matcherdatasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/management?useUnicodetrue&use…