密码加密(MD5)原则(续)

文章讨论了如何通过加盐方式增强密码复杂度,以降低被暴力破解的风险。预计算的哈希链和彩虹表是两种应对策略,但它们自身也存在如生成耗时和可能的重复问题。更长、更复杂的密码和随机盐值能提高安全性,但仍无法完全防止暴力破解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果用户的密码过于简单,使用加盐的方式可以使得“密码”(其实是盐值和真正的原始密码的组合)变得更复杂,从而降低被收录对应关系的风险!这种做法的根本思想在于“大多计算机的硬盘不足于收录特别大量的数据”。

如果允许使用95种可打印字符作为密码的组成,则8位长度的密码排列组合有 6,634,204,312,890,625 种,想要收录所有可能的8位长度密码与MD5摘要结果的对应关系,大约至少需要 6,634,204,312,890,625 x (8 + 32) 个字符,如果按照每字符占2字节来算,共需要 6,634,204,312,890,625 x (8 + 32) x 2个字节,大约需要消耗 482,701 TB的存储空间!

如果想要通过查询的方式来破解MD5编码的结果,8位长度的全部对应关系需要约50万TB的存储空间,几乎是不现实的!对于尝试破解密码的一方来说,可以采取“预计算的哈希链”来解决此问题!

在使用“预计算的哈希链”做法之前,首先,必须假定原始密码的长度,以6位长度为例,假设原始密码是123456,经过MD5编码后,结果是:

e10adc3949ba59abbe56e057f20f883e

接下来,需要设计一个“约简函数”,将以上摘要结果变成6位长度的,此“约简函数”应该如何设计,并没有固定的做法,假设是取出摘要结果中的前6位,则以上摘要结果经过“约简函数”的运算后,就变成了:

e10adc

接下来,再使用MD5对以上约简结果进行编码,得到:

96bf38d01b84aa16cf2bb9f55c61ac85

然后,重复以上的操作,继续使用约简函数,得到:

96bf38

继续使用MD5对以上结果进行编码,得到:

c6349b59d5ca7f5fa05de13d26fcf20c

假设,整个过程持续做10次,数据的变化将是:

123456    e10adc3949ba59abbe56e057f20f883e    96bf38d01b84aa16cf2bb9f55c61ac85    c6349b59d5ca7f5fa05de13d26fcf20c    ac4c4cd7cde8d12f799c72b337af37bb    068696500ff51c01bc5012884eecd673    e3225ab333b37defddba2a8022c0c468    771fd067be8d0fe2195e5df0bc9826cc    707d8265701e8573695b67cb4d667083    7750d6017d681c782c0e6bcce65fa2c0    698ff2cd213ebb4a68c49570d3b3b148698ff2

对最后的结果再次使用约简函数运算,将得到698ff2,然后,将最开始的123456(原文)和最后得到的698ff2(密文)存储到数据库中即可!(最后一步也可以不存约简结果,而是直接存摘要结果)

假设已经某个MD5摘要数据是e3225ab333b37defddba2a8022c0c468,当尝试“破解”时,依然使用约简函数得到e3225a(与之前的做法保持一致,取出前6位),并与当前数据库的所有“密文”进行对比,如果无此结果,则对e3225a使用MD5进行运算,将得到的结果771fd067be8d0fe2195e5df0bc9826cc再次约简,得到771fd0,与数据库中的再次对比,如果仍无此结果,则继续重复类似的操作,最多执行10次(与此前的生成过程保持一致),如果其中某1次命中,则密码的原文一定在对应生成过程中,则可以根据数据库中对应的原文123456来执行类似的操作,每次使用MD5编码后,都与尝试破解的e3225ab333b37defddba2a8022c0c468进行对比,最后,就可以“破解”成功!

使用“预计算的哈希链”是典型的“牺牲时间,换取空间”的做法!

其实,以上做法仍有一部分缺陷:

  • 生成对应关系需要消耗大量的时间

  • 不同的链中可能存在相同的部分(取决于约简函数的设计)

为了进一步优先这个做法,就有人专门去设计了更优质的约简函数,并且,生成好了以上预计算哈希链的数据库,放在网络上提供下载!具体表现为“彩虹表”。

作为密码的加密方,为了进一步防止密码被破解,可以使用位数更长、组成字符更复杂的,甚至使用随机的盐值

注意:即使是这样,也无法有效的阻止暴力破解!

Visual Studio .NET VB编程语言 MD5(DES) 8密钥加密或解密文件function源代码 压缩包 : MD5 skey8加密(文件).zip 列表 MD5 skey8加密(文件)/ MD5 skey8加密(文件)/bin/ MD5 skey8加密(文件)/Form1.Designer.vb MD5 skey8加密(文件)/Form1.resx MD5 skey8加密(文件)/Form1.vb MD5 skey8加密(文件)/MD5 skey8加密(文件).vbproj MD5 skey8加密(文件)/MD5 skey8加密(文件).vbproj.user MD5 skey8加密(文件)/My Project/ MD5 skey8加密(文件)/My Project/Application.Designer.vb MD5 skey8加密(文件)/My Project/Application.myapp MD5 skey8加密(文件)/My Project/AssemblyInfo.vb MD5 skey8加密(文件)/My Project/Resources.Designer.vb MD5 skey8加密(文件)/My Project/Resources.resx MD5 skey8加密(文件)/My Project/Settings.Designer.vb MD5 skey8加密(文件)/My Project/Settings.settings MD5 skey8加密(文件)/obj/ MD5 skey8加密(文件)/obj/Debug/ MD5 skey8加密(文件)/obj/Debug/CoreCompileInputs.cache MD5 skey8加密(文件)/obj/Debug/DesignTimeResolveAssemblyReferences.cache MD5 skey8加密(文件)/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).exe MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).pdb MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).vbproj.FileListAbsolute.txt MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).vbproj.GenerateResource.Cache MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).vbprojResolveAssemblyReference.cache MD5 skey8加密(文件)/obj/Debug/MD5 skey8加密(文件).xml MD5 skey8加密(文件)/obj/Debug/TempPE/ MD5 skey8加密(文件)/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.exe MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.Form1.resources MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.pdb MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.Resources.resources MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.vbproj.FileListAbsolute.txt MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.vbproj.GenerateResource.Cache MD5 skey8加密(文件)/obj/Debug/WindowsApplication1.xml MD5 skey8加密(文件)/obj/Release/ MD5 skey8加密(文件).sln MD5 skey8加密(文件).v11.suo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值