MD5算法全解析

在介绍MD5算法前,很有必要解释一下单向加密算法。单向加密,人如其名,就是只能单向对明文进行加密,而不能逆向通过密文得到明文。该算法在加密过程中,在得到明文后,经过加密算法得到密文,不需要使用密钥。因为没有密钥,所以就无法通过密文得到明文。

2.MD5算法

MD5,全称MessageDigestAlgorithm5,翻译过来就是消息摘要算法第5版,是计算机安全领域广泛使用的一种散列函数,用于确保信息传输的完整性。MD5算法是由MD2、MD3、MD4演变而来,是一种单向加密算法,一种不可逆的加密方式。

二、特点

1.长度固定

不过多长的数据,经过MD5加密后其MD5值长度都是固定的。MD5值长度固定为128位,而最后的值一般都用16进制数字表示,一个16进制数字占4位,所以最后的MD5值都是用32个16进制数字表示。

2.计算简单

MD5算法说到底还是散列算法,或者叫做哈希算法,所以计算一个数据的MD5值是比较容易的,同时加密速度也是很快的。

3.抗修改性

对原数据进行任何改动,哪怕只是修改1个字节,所得到的MD5值都有很大的区别。

4.强抗碰撞性

已知原数据和其MD5值,很难找到具有相同MD5值的数据,即很难伪造数据。这里的碰撞在后面的安全性中会提到,在这里我们简单理解为一种破解手段。

三、原理

1.填充数据

首先计算数据长度(bit)对512求余的结果,如果不等于448,就需要填充数据使得数据长度对512求余的结果为448,其填充方式为第一位填充1,其余位填充0.填充后数据长度为512*N+448。

2.记录数据长度

用64位来存储填充前数据的长度,这64位将加在填充后数据的后面,这样最终的数据长度为512*N+448+64=(N+1)*512

3.装入标准幻数

标准幻数其实就是4个整数,我们知道最终的MD5值长度为128位,按32位分成一组的话可以分成4组,而这4组结果就是由这4个标准幻数A,B,C,D经过不断演变得到。在MD5官方的实现中,四个幻数为(16进制):

其实上面是大端字节序的幻数,而在正常程序中,我们实现的是小端字节序,所以在程序中我们定义的幻数应该是:

A=0X67452301B=0XEFCDAB89C=0X98BADCFED=0X103254764.四轮循环运算

在上面对数据处理后,数据长度将是(N+1)/512,我们将每512位(64字节)作为一块,总共要循环N+1次,并将块细分为16个小组,每组的长度为32位(4字节),这16个小组即为一轮,总共得循环4轮,即64次循环。总的来说我们需要(N+1)个主循环,每个主循环包含了64次子循环,来不断的改变幻数A,B,C,D才能最终得到数据的MD5值。

1)4个非线性函数

在4轮循环中,F,G,H,I会交替使用,第一轮使用F,第二轮使用G,第三轮使用H,第四轮使用I。即每隔16次循环会换一个函数。

2)Mi

将每一块512位分成16等分,命名为M0~M15,每一等份长度为32位16次循环中,交替使用

3)Kj

常量数组,在64子循环中用到的常量都是不同的

4)s

左移量,每轮循环用的S各不相同,每轮总共有4个左移量,每4次循环为一周期

4.2核心公式

总共有四个核心公式,与4个非线性函数一一对应,即每轮使用的核心公式里的公式有差异。

四、算法实现

五、Android中的实现

1.核心算法

1.1计算字符串的MD5值

2.实际应用

2.1密码认证

然后我们通过fiddler4爬取请求的接口,通过请求头我们可以找到username和pwd的字段,可以断定是账号和密码,接着核对账号,确认是我们刚刚输入的请求,然后核对pwd字段,结果发现是32位的字符串,我们可以断定这个32位字符串应该是MD5值,因为我们知道MD5值长度固定为128位,然后用16进制表示的话,就是32个16进制数字(128/4)

2.2一致性验证

一致性验证就是文件MD5值的应用,MD5加密时,将整个文件当作一个大文本信息,通过字符串变换算法,产生了唯一的MD5值。在Android中最常用的莫过于文件下载,比如首先服务器会预先给一个完整的文件提供一个MD5值,用户下载该文件后,重新计算文件的MD5值,如果相同,证明文件已经被成功的下载了。如果不相同,则证明文件下载出错或者当前文件还在下载中。在Android中使用计算文件的MD5值需要注意要将该操作放在子线程中操作,因为计算文件MD5值属于耗时操作,不能在主线程运行,否则会出现OOM的情况。

1.百度网盘的秒传

看到这估计有人会有些疑问,什么是秒传功能?不急,待我慢慢道来!

基本概念

原理

过程

2.应用程序更新

也许你又纳闷了,应用程序更新为什么需要用到MD5这是为了友好的用户体验以及安全性考虑,MD5一致性验证可以防止下载的更新APK被恶意篡改或者防止下载的APK不完整造成不良的用户体验。MD5在应用程序更新中的主要作用就是:

五、安全性

上面讲了这么多,你会发现从MD5加密本身来讲这个过程是不可逆的,但并不意味着MD5算法不可破解,破解对于MD5一致性认证没多大影响,但是对于MD5的密码认证来说是致命的。

1.撞库破解

如果让我们猜密码,肯定会猜“123456”,生日,手机号等,而撞库的原理也就是这么简单。首先建立一个大型的数据库,然后把最常见的,有可能出现的密码,通过MD5加密成密文,并且以这些MD5值为主键加索引,将常见的密码为单列存入数据库中,并通过不断的积累,形成一个巨大的密码MD5数据库,这样当你截取到网络上密码的MD5值时,通过查询这个巨大的数据库来直接匹配MD5值,这就是所谓的撞库。这么一看撞库有点类似穷举法,所以撞库破解的概率是很低的,但也不是说不可能破解。通过下面两个网站就很容易获得原文:

2.MD5加盐

2.1原理

MD5加密可以通过撞库来破解,因此为了防止内部人员和外部入侵者通过密码的MD5来反查密码明文,需要对密码掺入其它信息,然后算出加工后的密码的MD5值称之为MD5加盐。

2.2加盐算法

1.账号+密码

这个加盐算法很简单,就是将当注册时将用户名和密码组合起来,然后计算其组合的MD5值作为密码发送到服务器上,这样就能增加反查的难度。但是这个加盐算法也存在问题,当应用程序提供修改用户名这一功能时,当用户名发生变化时,密码就不可用了(如果要用,就必须重新计算新的用户名和密码的MD5值然后发送给服务器,这样修改用户名,等于修改密码的功能)

2.随机数

我们知道MD5加密有个特性,一个数据的MD5值永远都是一样的,也正是因为这个特性才有了MD5一致性的验证,但是也是撞库破解的一个入口。正是因为密码的MD5值永远都是一样的,所以可以根据MD5值直接从数据库中查询出密码。因此随机数算法就是给密码加入随机数然后生成新的MD5值,这样破坏这个特性,让密码的MD5值每次都是不一样的。

核心算法

上面核心算法的加盐过程和验证如下图所示。

总结

MD5看似是很简单的加密算法,但是搞懂其底层实现原理并没有想象中那么容易。MD5加密算法不仅仅在安卓平台上,在其它平台上也是非常重要的一种加密算法。通过这次对MD5的学习,真的是收益匪浅,不仅仅让我对MD5有了更深的理解,并且认识到了MD5和加密算法的重要性。

THE END
1.系统+数据库+论文+答辩)安卓appweb小程序哔哩哔哩系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户)模块管理(图书信息、分类管理、购买信息、入库记录、采购记录)等。用户个人前台管理主要包括:首页、留言板、公告消息、图书资讯、图书信息等功能,https://www.bilibili.com/video/BV1RbcieXE2e/
2.基于android的图书馆系统的设计与实现藏书馆系统开发的目标就是要构建一个简单优秀的移动电子书阅读系统,最终开发出一个功能齐全、操作简单、维护方便的电子书阅读系统。该系统减轻了人们外出携带书籍的负担,还原了人在阅读纸质书籍时的习惯。 二、运行环境 总体设计逻辑和思路: 1:先设计数据库表文件 https://blog.csdn.net/u014388322/article/details/121210752
3.打造专属于你的书单数据库(含书籍管理工具推入荐自制app教学)以英文字籍来说,英语世界后起之秀Goodreads支持汇出 CSV,iOS、Android 平台均支持,英文字多的人可以直接考虑 Goodreads。我接下来就简单介绍一下“Goodreads”、“私家书藏”、“我的图书馆”这三个 app ,并说明用它们扫码创建书目/汇出的流程。 Goodreads:英文字社群 No.1,功能完整、英文字齐全 https://www.ragic.com.cn/intl/zh-CN/blog/277/nocode-custom-book-database-app-guide
4.老公的特殊癖好图书馆女店员被痴汉在线看 83.16MB 34%好评14人) 亚洲国产va午夜在线电影蜜臀 高中生大学生一级A片 原版金瓶梅电影完整版 05.70MB 09%好评2206人) 色哟哟区二区三区四区 色色乱入 理论黄色网 04.35MB 87%好评492人) 上海熟妇粉穴19P 爆逼逼草 内射视频亚洲国产 58.60MB 68%好评239人) #学生 #嫩屄小http://www.ljpack.com/meishi9142674
5.个人图书馆app官方免费下载个人图书馆360v7.6.9安卓版大小:76.5M语言:中文 类别:浏览阅读系统:Android 点击下载简介|教程|评论(1) 版本:v7.6.9 安卓版时间:2024-10-21 应用介绍 360doc个人图书馆app为你提供丰富的资源,这里有丰富的文章资讯,用户可以随时查看自己想要的文章,还可一键全文保存,可直接复制文本使用,非常方便。 软件功能 一键复制,方便快捷 全文保存,https://m.qqtn.com/q/284495
6.许昌学院信息化系统使用指南(教师版)2.4.6图书馆服务 2.4.7报修服务 2.4.8其他服务 3协同办公系统(OA系统) 3.1Web页面访问 3.1.1登录 3.1.2 OA常用功能模块介绍 3.2PC客户端(OA精灵)访问 3.2.1 OA精灵下载、安装 3.2.2客户端配置 3.2.3客户端使用简介 3.3移动端OA精灵APP使用方法 https://wlzx.xcu.edu.cn/info/1025/2091.htm
7.www.zhuanyechaichu.com/meishi6/519627.html在图书馆往下边塞东西 67.67MB 06好评 黄色视频胸 联合早报即时报道视频 国产精品成人第一区二区三区 813.01MB 359好评 日韩喷水网址在线观看免费网站 收服乔乔1V4 30种双修方法图片 371.88MB 95好评 爽?好舒服?快?吸乳口述视频 啊好大wuma 半糖次元黄化版 835.26MB 0758好评 软磨激情泡良乱伦故http://www.zhuanyechaichu.com/meishi6/519627.html
8.www.hubamdi.com/fancai/225007.html图书馆的女友未增删带翻译樱花免费 86.40MB 66好评 肥胖一级性活片一级片 丰满一级毛片 鼠标dpi多大合适 418.10MB 671好评 《老湿机》高清不卡在线观看_中国文明网 男女搞基软件在线看 小四郎AV影音先锋免费 88.30MB 60好评 深夜福利大全久精 《新版金银瓶》综艺手机免费观看完整_海外网 欧洲BBBBhttp://www.hubamdi.com/fancai/225007.html
9.最新安斋拉拉电影一场视听盛宴的华丽亮相新闻时政新闻,黑料不打烊最新2022地址在线观看-黑料不打烊最新2022地址,真人两个男生做酿酿酱酱,网友纷纷表示这是一种新奇的体验,,美丽姑娘高清在线播放-美丽姑娘高清视频在线观看 - 神马影院,图书馆里强摁做开腿韩国电影,《哥布林巢穴》免费在线观看全集 - 里番动漫 - 九兔动漫,国产愉拍91九色国产愉拍-友:这是http://www.ehuajie.cn/article/doc-NvIuT6r2025-02-03.shtml
10.www.chinashj.cn/fancai828708209/406731.html动漫和他在图书馆偷偷做,玩我的两个奶球在线免费观看 61.99MB 44%好评4545人) 欧美牲爱天堂,操B视频 bbwanal玛丽莎 男同做运动口交事漳视频 91.56MB 33%好评996人) 久久最新获取免费视频4 她也色在线观看一区 白丝JK裸体被 出水网站 92.14MB 14%好评9819人) 插逼骑乘网站 韩国毛j片 B级毛片 53.86MBhttp://www.chinashj.cn/fancai828708209/406731.html
11.www.hapone.cn/birsir6398628.htm应用分类:ios-Android同学故意把我的校服当抹布用作文 使用语言:中文 :需要联网 系统要求:5.41以上 应用介绍 一,欧美变态?,男女拨箩人在线看 二,男生坤坤对美女坤坤,欧美变态另类牲交ZOZO 三,一个?P一个?久久免费,人人爱人人澡人人狠 https://www.hapone.cn/birsir6398628.htm
12.移动图书馆APP(精选十篇)调研后发现:国内高校图书馆的移动APP建设模式主要有定制开发(包括自主开发和委托外包开发,如清华大学图书馆、南京大学图书馆、浙江大学图书馆都定制开发了自己的移动图书馆APP)与购买商业化产品(如国内的超星移动图书馆、书生移动图书馆及汇文手机图书馆三大商业化APP系统)两种模式;《报告》中排名前100的高校图书馆有90https://www.360wenmi.com/f/cnkeyyzu62mg.html
13.从iPhone直接传输音乐的最简单方法在本教程中,我们分享了有关如何将音乐从iPhone传输到Android的多种解决方案。 在谈论从iPhone传输数据时,iTunes可能是您脑海中浮现的第一个工具。 但是你应该知道有关iTunes的一些事情。 首先,它能够将音乐从iPhone下载到iTunes音乐库,然后您可以将歌曲从图书馆上传到Android。 但这种方式只能用于转移购买的歌曲。 如https://www.apeaksoft.com/zh-CN/transfer/music-from-iphone-to-android.html
14.360docapp官方版2025免费下载安装最新版各App、网站中看到的趣文、美图、文档、段落,一键保存至「个人图书馆」,轻松整理、便捷保存。● 自由创作简单易用的编辑器,随时随地助你高效创作;优质原创内容,更可获得高额原创奖励。● 知识分享千万馆友分享的海量文章,官方提供的正版电子书,一站式阅文、看书、听书,尽在「个人图书馆」。● 思考感知阅读时的https://m.liqucn.com/os/android/rj/241055.wml
15.www.shenghuaedu.com/xxxr31597335.htm图书馆的女友第五集未增删带翻译_HD_高清全集在线观看 19.06MB 13%好评2398人) 抖阴色版app免费下载 18禁真人抽搐一进一出动态图 锕锕锕好痛 36.28MB 05%好评18人) 淫色手机视频网 趣夜免费交友app下载 对肌肌 62.40MB 03%好评71人) 金沙人妻一区二区 欧美最猛XXXX黑人猛交 免费黄色无码http://www.shenghuaedu.com/xxxr31597335.htm
16.电子技术与软件工程杂志中国电子学会主办2017年第13期随着科技的发展,“互联网+”模式逐步融入我们生活的方方面面,基于“互联网+”模式的智慧图书馆建设迫在眉睫,构建一个智能高效的数字文化空间的生态环境具有很好的现实意义。 基于卫星通信系统的IP数据加密技术 关键词:ip加密 卫星通信系统 tcp加速 密钥管理 本文针对星状网通信组网方式,提出了基于卫星通信系统的IP数https://www.youfabiao.com/dzjsyrjgc/201713/