发表文章
修改MD5加密 提高网站安全
2006-08-28 16:23:55
大 中 小

特别说明:此种改变只能用于在刚开始建站时才可,如果你中途改变的话就会出现问题。

  也许提到MD5时大家都很熟,但你真的是这样吗?了解其是如何进行散列的实际过程吗?虽然我们一般的人是不用这样去寻根问底,要用的时候直接去下载别人已编好的程序用就得了。

由于算法大多的人都是知道的,所以现在网上有很多破解MD5散列值的工具,但我们搞安全的完全可以发挥我们的想象力充分地调动自己的积极性,是否想过自己也重改造一个MD5的算法呢?让现在所有的破解MD5的工具下课呢?因为MD5在我们网络中实在是用得太广了,各网站要保存用户的资料,但明文保存时又怕万一被哪个攻击者攻入网站,下载了数据库,所以我们常用MD5进行散列各种重要的资料。但是现在有好多工具是可以进行简单的破解的。

我们先来了解一下MD5这个散列算法,然后我再一个例子说明如何提高了网站的安全性。

  下边我只是简单的说明,x与y的所在空间就不作介绍了(x∈A,y∈B)。我们来看看一个散列算法一般是要满足下面三个条件之一:

  1、 H是一个单向函数。即对几乎所有的H(x)=y,已知y要求x,则在计算上是不可行的。

  2、 已知x,找x′∈A,使H(x)=H(x′)在计算上是不可能的,这也就是弱无碰撞性。

  3、 找一对x和x’, 而x≠x’,使H(x)=H(x′)在计算上也是不可行的,这也就是强无碰撞性。

  这样就称为安全保密的Hash函数。下边是对消息的散列过程:

  由上边的表大家也许看到了左边是不是要求输入一个初始向量IV,这也就是今天我说明的关键地方,这个初始向量要MD5算法中是由A、B、C、D四个缓冲区寄存器存放的,而每一个寄存器是32比特。它们的初始值是:

  a = 0x67452301

  b = 0x EFCDAB89

  c = 0x 98BADCFE

  d = 0x 10325476

  在这我们可以看到这四个16进制的值,这也可看做是一种初始的种子,如果大家对MD5的算法过程清楚的话,我们可知在这过程在主要是一些异或、求模等的运算,对每一个分组512比特消息进行处理的,而每一分组都进行4*16次的运算,所以我有个大胆的想法,只是我们把初始值进行稍微的改变的话,那不就是变成另外的MD5散列算法了吗!我们知道A、B、C、C四个值共是16进制的4*8=32位,那么我们都可计算可能被破解的概率空间,如果动得更多的话,那被破解的可能性也就越小。只要我们改变一位的话,而同时我们也不必改动算法的其它部分,从而也不会对我们的程序进行多大的变动。是不是就找到一种新的散列算法了呢,其实,对散列算法有研究的就可知,美国的信息压缩标准SHA也是与MD5有点相似(主要是指思路)。

  现在介绍了这些有关的MD5知识后,我们来看看如何修改我们网站管理程序的源码,这里我以国内有名的动网论坛DVBBS7.0说明。

  我们都知道动网论坛的用户的数据如密码,提问的问题的答案是以MD5散列的,通常攻击者就是下载了数据库来进行破解而得到管理员的密码的,默认的是放在这个路径下的:bbs/data/dvbbs7.mdb 而我们一般是采用的是修改数据库的名字,同时相应的修改一下conn.asp中的相关设置。

  现在我们的方法是你找到这个文件/inc/md5.asp。这个页面就是我们进行散列处理的程序,只是在这修改一下的话,我们就产生了自己的新MD5散列算法。然后以记事本的方式打开它,找到这个地方。

  看到了吧,a、b、c、d这四个值了吧,就是我们前边谈的哟,看你如何改了。随你的便了吧!但我建议是你最好改一位就可了,还是尽量少改吧。如你可把a = 0x67452301改为a = 0x67452300这样你就用了一个与众不同的MD5算法呢,这样,哪怕就是你的数据库被下载了,你也可以放心的用了。让他们的破解MD5的工具见鬼去吧!

  但是我要说明的是,了解MD5过程的人可能会问,你这样改变会影响操作吗?这个问题专家可能都很难把它论证。同时我给大家要说的是,MD5是征对所有的信息的,而我们这样的改变,仅仅用在一个网站上的几千个,上万个用户的话,应该是没有多大问题的,但是我们要从数学上证明它这个改变后也能满足文章开始时说的三个条件的话,确实有一定的难度,这就让读者去讨论一下吧。

ps:原始的md5加密因子:

a = &H67452301
    b = &HEFCDAB89
    c = &H98BADCFE
    d = &H10325476

修改MD5加密 提高网站安全相关推荐

  1. C语言/实现MD5加密

    本文详细视频讲解,已经发布到B站 https://www.bilibili.com/video/BV1uy4y1p7on/ 更多仔细,请关注公众号:一口Linux 一.摘要算法 摘要算法又称哈希算法. ...

  2. C语言实现MD5加密,竟如此简单!

    一.摘要算法 摘要算法又称哈希算法. 它表示输入任意长度的数据,输出固定长度的数据,它的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密. 目前可以被解密逆向的只有CRC32算法,只有输入相 ...

  3. MD5安全吗,MD5加密有哪些问题,如何提高安全性?

    MD5是一种散列函数,在计算机安全领域得到广泛应用.然而,MD5国际密码算法被王小云研究团队证实并不安全,因为MD5本身存在一些缺点,这些缺点导致了MD5并不是很安全,可能会带来信息安全上的问题.那么 ...

  4. 网站功能小Demo——学习MD5加密的一点心得

    生活在数字信息化时代,我们每天接触最多的就是网络,其中包括我们在各大形形色色的网站注册的账户.从而网络安全变得极其重要,毕竟涉及到自身的账户信息安全以及财产安全.那么网站在建设的过程中时如何做到保护信 ...

  5. 修改CAS的MD5加密规范

    2.4.1.背景  本文使用的CAS版本为4.0.0 CAS服务和第三方进行对接,第三方使用的MD5加密规范为64位,而CAS的MD5加密规范为32位.因为第三方数据库中数据繁多,不便于进行修改.因此 ...

  6. (JS逆向专栏三)某玩游戏平台网站登入MD5加密

    声明: 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 名称:365玩游戏平台 目标:登入参数 加密类型:MD5 目标网址: ...

  7. python使用md5加密_如何使用Python构建加密机器人并将其连接到Facebook Messenger

    python使用md5加密 by Paul Pinard 保罗·皮纳德(Paul Pinard) 认识Sato the Cryptobot,他能够从外部API获取任何加密货币的价格! (Meet Sa ...

  8. 基于django的 md5加密

    基于django的 md5加密 md5相关知识点(百度百科) 1前提知识点 1.1.特点 1.2关于撞库破解: 1.3关于MD5加盐: 2 实际操作 2.1在python中正常加盐方法 2.2在dja ...

  9. 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...

    在这个文章里,我将分享一下在iOpenWorks.com这个网站试运行中碰到的若干问题和解决方案,这些问题包含了:(1)如何通过ASP.NET MVC预编译提高性能:(2)如何知道网站在运行中,用户响 ...

最新文章

  1. java 流换行符_【求大神】如何读取含换行符的缓冲流文件
  2. 【贪心】小Y的炮[cannon]题解
  3. 过程作为黑箱抽象——《计算机程序的构造和解释》
  4. 【数据结构与算法】之深入解析“搜索旋转排序数组”的求解思路与算法示例
  5. Binder ThreadPoolMax default = 15
  6. mysql插入日期 vs oracle插入日期
  7. matlab火箭升空问题,困扰火箭的三大问题终于要解决了!球迷:我都要膨胀了!...
  8. [汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。
  9. 腾讯优图刷新人体姿态估计国际权威榜单,相关论文被ECCV2020收录
  10. Bootstrap栅格系统研究
  11. Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条(未待解决完问题)...
  12. win10通过VMware使用教程
  13. CodeForces - 3B Lorry【贪心】
  14. 什么是服务器、ip以及域名以及他们之间的联系
  15. 《数学之美》阅读笔记1
  16. stm32—酒精传感器的初步使用
  17. php反序列化漏洞中当不存在__invoke时的一种利用思路
  18. 加州大学4.8万人大罢工!博士竟卖血为生,多校濒临崩溃!
  19. hp8080计算机无法usb启动,HP Compaq 8000 Elite 台式机​无法从U盘启动解决办法
  20. 计算机控制系统++康波,计算机控制系统(康波)第3章习题部分参考解答12[1]

热门文章

  1. 禁用windows更新完成后的重启提示
  2. hadoop2.6.0实践:002 检查伪分布式环境搭建
  3. centos 编译安装mysql
  4. 同步线程和进程间的通信
  5. 浅析中科红旗的生与死
  6. Hibernate的generator属性之意义【转】
  7. 毕业设计(3)基于MicroPython的篮球计时计分器模型的设计与实现
  8. 4种营销场景满足其中一个要不要做小程序?
  9. Hibernate QBC 分页
  10. 扯谈spring mvc之WebApplicationContext的继承关系