加密算法极先锋之MD5算法
haoteby 2025-01-14 13:52 1 浏览
在开发过程中,避免不了要涉及到数据加密,比如用户账号密码的加密,用户敏感数据的加密,涉及到的加密算法种类繁多,作为拿来主义的开发者时间精力有限,能够清楚其中主流的加密算法和用途,就已经足够了。
主要的数据加密算法主要有:md5、sha、aes、des、rsa、base64等等。
先来看看我们的老熟人:md5算法MD5算法是哈希算法的一种,虽然不能算真正意义上的加密算法,但几乎在任何一个系统中,都少不了他的身影。MD5算法全称叫 Message Digest Algorithm 5(信息摘要算法5),是数字摘要算法的一种实现,摘要长度为128位。由于它哈希算法的典型特征,注定了他无法从密文准确还原出明文,因此MD5算法不能算真正的加密算法,但在很多地方也笼统地叫它是加密算法。由于其具备了足够的复杂性和不可逆性,因此主要用于确保信息传输完整性和一致性。他还有早期的“不太争气”的几代MD2、MD3、MD4(早期的几代就是由于复杂度不够被破解了)。正是由于MD5算法有如此特性,在业界应用非常广泛,主流的编程语言都自带有MD5的实现。
最常见的,很多系统中的用户密码都采用了MD5加密算法进行加密。但是树大必然招风,就像windows系统应用广泛了,安全性就收到了挑战,MD5也不例外。度娘一下就会发现,有诸多网站提供MD5破解,有的甚至需要收费提供破解服务。
不过不用担心,目前能破解MD5并还原出原始数据的成功率很低(当然像123456这种弱智的原文,就不要提了,其他的破解可以自行度娘试试)。这就需要提到现行MD5算法的主要破解思路,其实核心只有一个,那就是暴力碰撞(其他还有两种 字典法、彩虹表法都是暴力碰撞法的改良,原理一样),说白了就是用已知的字符进行各种变态组合,生成众多的密文与原文的对应库,然后反向根据密文,找到对应的明文。
比如,你的明文数据是 abcd1234(当然实际不应该这么简单,这里只是举例),加密出来的密文是e19d5cd5af0378da05f63f891c7467af,那么不安好心的人就会用密文e19d5cd5af0378da05f63f891c7467af去提供这种破解的工具或者服务那里,查询这个密文有没有对应明文,如果有,就代表破解成功了,然后他就拿这个“破解”得到的明文去登录你的账号,结果可想而知。
成功进入了你的领地,但这个成功,是不完美的。因为md5的不可逆性,大多数账号登录过程,只能拿用户输入的原文加密成MD5密文后去跟数据库里的密文比较,相同则认定密码正确。
但这也有漏网之鱼,因为即使破解出来的结果不是上面说到的abcd1234而是xxxxx,也有可能用xxxx成功登录系统。
因为MD5虽然不可逆,但不是唯一性。 这里所谓的破解,并非把摘要还原成原文。为什么呢?因为固定128位的摘要(也就是加密后的密文)是有穷的,而原文数量是无穷的,每一个摘要都可以由若干个原文通过Hash得到。换句人话说,就是不同的原文可能加密后得到相同的密文。那么拿密文猜测原文就会得到多个结果,单纯比较密文,就会被认为是一致的。而反过来,也是同理。拿到不一定对的还原出来的明文去做其他操作,也不一定能成功。
总结一下,MD5加密算法之所以破解成功的概率很低,主要由于以下几点:1)依赖暴力碰撞的破解思路,意味着需要尽可能多的组合所有字符,形成海量的配对库,用于通过密文反向查询明文,但字符种类千千万万,所有都进行组合,可能性都超过地球的细胞总数了,估计现在所有硬盘加在一起的空间都存不下,成本之高,可想而知。
2)目前能破解的都属于已经被组合猜测过的,一般也都是长度较短的或者比较有规律的组合。只要长度越长越没有规律,不同类型字符组合越多,破解概率越低,几乎不会成功。
3)就算密文对了,原始明文也不一定对,当然这是最后一道防线,听天由命了。
另外,MD5的用途,目前主流的无非两种,一种是用于类似用户密码等不需要还原的敏感数据的加密,一种是用于确保信息传输完整性和一致性。其实,第二种用途才是他诞生的初衷。
这里简单提一下第二种用途。很多支付接口、数据交互接口,都采用基于MD5来确保数据的完整性和一致性,也就是在网络传输过程中没有被篡改。如何保证数据不被篡改,仅仅依靠MD5做不到,还需要联手其他加密算法
相关推荐
- 简单Labview实操案例
-
有几位条友私信我说Labview是怎么学的,怎么才能学好Labview,今天给大家简单介绍一下,如果想学上位机,Labview是相对来说比较容易上手的,而且开发速度也比较快,但是运行时候比较吃内存,...
- 关于LabVIEW用于仪器测控的自动测试程序的程序框架的选择问题!
-
有很长一段时间没有在公众号平台上输出、总结关于LabVIEW的知识文字内容了!主要是这段时间自己本职工作任务甚为繁重,加上各种家庭事宜的牵绊,耗费了过多的时间和精力,也就无力及时更新了。今天是端午节假...
- LabVIEW编程基础:分割条控件的使用
-
1、分割条控件简介同其它高级编程语言类似,在LabVIEW中分割条控件也是界面设计中常用的一种控件元素,利用分割条控件可以将前面板划分为多个独立的区域,每个区域都是一个单独的窗格,这些窗格具有前面板的...
- csgo一直显示正在连接到csgo网络怎么办?三招帮你解决
-
CSGO是一款射击类的游戏,它的全名叫反恐精英:全球攻势,是一款由VALVE与HiddenPathEntertainment合作开发、ValveSoftware发行的第一人称射击游戏,相信很...
- cs1.6没有bot怎么办
-
Hi~大家好啊,这里是聚合游戏,每天为你分享游戏相关的内容,喜欢的快来关注哟~...
- 《反恐精英:全球攻势2》 漏洞暴露玩家的IP地址
-
#文章首发挑战赛#据报道,在全球知名的电子游戏——CS2(《反恐精英:全球攻势2》)中存在一个HTML注入漏洞,这个漏洞被广泛利用来在游戏中注入图片并获取其他玩家的IP地址。...
- 《电子宠物》《007黄金眼》《雷神之锤》入选世界电子游戏名人堂
-
世界电子游戏名人堂5月8日公布了新的四位入选者《防卫者》《电子宠物》《007黄金眼》和《雷神之锤》,以向改变游戏行业规则的经典游戏致敬。世界电子游戏名人堂每年都会表彰那些具有持久热度并对视频游戏行业或...
- V社修复《反恐精英2》游戏漏洞:可抓取玩家IP地址、发起XSS攻击
-
IT之家12月12日消息,Valve旗下《反恐精英2》游戏被曝光新的安全漏洞,攻击者通过注入恶意代码来抓取玩家的IP地址,并能对同一游戏大厅中的所有玩家发起跨站脚本攻击(XSS)。攻击...
- 粉丝自制《CS》1.6重制版将于2025年登陆Steam
-
基于Valve官方起源引擎SDK,由多位“CSPromod”粉丝项目前开发人员从头构建的《反恐精英》1.6版本重制版《CS:Legacy》日前宣布将于2025年在Steam发布。开发团...
- 知名网游源代码泄漏 ,外挂潮将来?
-
SteamDatabase近日发布消息称Valve旗下游戏《反恐精英:全球攻势》(CS:GO)与《军团要塞2》(TF2)的源代码疑遭泄露。据了解,游戏源代码如果泄露的话,黑客可以更为轻松地开发出外挂,...
- 求斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道几种?
-
ByLongLuo斐波那契数列...
- 三维基因组:Loop结构 差异分析(2)
-
通过聚合峰分析进行可视化既然已经找出了“WT”和“FS”条件之间的差异loop结构,就可以利用聚合峰分析(APA)来直观地展示loop结构调用的质量。APA是一种以Hi-C数据中的中心loop像...
- 用Excel制作动态图表(动态名称法)
-
动态图表也称交互式图表,指图表的内容可以随用户的选择而变化,是图表分析中比较高级的形式。使用动态图表能够突出重点数据,避免被其他不需要的数据干扰,从而提高数据分析效率。一个好的动态图表,可以让人从大量...