`
勤业思行
  • 浏览: 82111 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

密码字段的安全性研究和MD5算法

阅读更多

一、密码存储数据库的安全问题

     在实际应用中,一般不会直接在数据库中以明文的方式来保存用户的密码,因为这样很容易造成密码的泄露。所以需要将密码进行加密后以密文的方式进行保存,另外一种更有效的办法是只保存密码的MD5摘要,因为相同的两个字符串MD5值也相同,在登录时就可以根据密码的MD5摘要和数据库中存放的MD5值摘要进行比较来确定用户输入的密码是否正确。同时,由于获取到了MD5摘要后不能反推出原来的密码明文(这是由于MD5算法是一种不可逆的加密算法),即使内部人员可以查看用户信息表也无法知道用户的密码的明文。所以,MD5摘要存储用户的密码或者重要信息字段已经成为大多数应用系统的通用方式。

二、MD5完全安全吗?

     如果将加密的md5值直接保存在数据库,当网站存在注入或者其它漏洞时,入侵者极有可能获取用户的密码值,通过md5在线查询或者暴力破解可以得到密码。

   所以,目前大多数Web应用都是用了图片输入验证码的功能,这时因为图片上显示的验证码是随机生成的,验证码也是一次性的。每次登录都不同,这样使得工具暴力破解也无用武之地。

三、MD5算法

   MD5算法:Message-Digest Algorithm 5(信息-摘要算法).它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。它需要获得一个随机长度的信息并产生一个128位的信息摘要。

MD5加密算法的实现步骤:

1、MD5算法对输入的数据进行补位,使得如果数据长度Len,有Len%512==448。即Len==K*512+448位,即K*64+56字节。(K是任意整数)。具体补位操作:先补一个1,其余补0至满足要求。

2、补数据长度:用一个64位的数字表示原始长度B,把B用两个32位数表示。这时,数据就被填补成长度为512位的倍数。

3、初始化MD5参数。四个32位整数(A,B,C,D)用来计算信息摘要,初始化使用的是十六进制表示的数字

A=0X01234567
B=0X89abcdef
C=0Xfedcba98
D=0X76543210

A,C,C,D为链接变量.

4、处理位操作函数
X、Y、Z为32位整数

以下是每次操作中用到的四个非线性函数(每轮一个)。

  F(X,Y,Z) =(X&Y)|((~X)&Z)

  G(X,Y,Z) =(X&Z)|(Y&(~Z))

  H(X,Y,Z) =X^Y^Z

  I(X,Y,Z)=Y^(X|(~Z))

  (&是与,|是或,~是非,^是异或)

  这四个函数的说明:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。F是一个逐位运算的函数。即,如果X,那么Y,否则Z。函数H是逐位奇偶操作符。

5、算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。
    将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。
主循环有四轮,每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。
主要变换过程:
使用常数组T[1......64].T[i]为32位整数用6进制表示.数据用16个32位的整数数组M[]表示.

具体过程如下:

/*处理数据原文*/

For i = 0 to N /16-1 DO

/*每一次 把数据原文存在16个元素的数组X中。*/

For i=0 to 15 do
set X[i] to M[i*16+J]

END /结束对J的循环
/* SAVE A AS AA,B AS BB,C AS CC,AND D AS DD。*/

AA=A
BB=B
CC=C
DD=D

/*第1轮*/
/* 以[ABCD K S I]表示如下操作

A=B+((a+F(b,c,d)+X[k]+T[i])<<<s).*/
/* do the following 16 operations.*/

[abcd 0 7 1][dabc 1 12 2][CDAB 2 17 3][BCDA 3 22 4]
[abcd 4 7 5][dabc 5 12 6][CDAB 6 17 7][BCDA 7 22 8]
[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]
[ABCD 12 7 13][DABC 13 12 14][[CDAB 14 17 15][BCDA 15 22 16]

 

/*第2轮****/

/* 以[ABCD K S I]表示如下操作

A =B+(((A+G(B,C,D)+[K]+t[i]<<<S).*/

/* do THE FOLLWING 16 OPERATIONS.*/

[abcd 1 5 17][DABc 6 9 18[cdab 11 14 19][bcda 0 20 20]
[abcd 5 5 21][dabc 10 9 22][CDAB 15 14 23][BCDA 4 20 24]
[ABCD 9 5 25][DABC 14 9 26][CDAB3 14 27][BCDA 4 20 24]
[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]

 

第3轮*/

/*[ABCD K S I] A=B+((A+h(B,C,D)x[K]+T[I]<<<S)

[abcd 5 4 33][dabc 8 11 34][cdab 11 16 35][bcda 14 23 36]
[abcd 1 4 37][dabc 4 11 38][cdab 7 16 39][bcda 10 23 40]
[abcd 13 4 41][dabc 0 11 42][cdab 3 16 43][bcda 6 23 44]
[avcd 9 4 45][dabc 12 11 46][cdab 15 16 47][bcda 2 25 48]

 

第4轮*/

A=A+AA
B=B+BB
C=C+CC
D=D+DD
END

结束对i的循环,加密就结束了。输出的结果就是我们看不清楚的16位加密MD5密文了。

 

1
3
分享到:
评论

相关推荐

    物联网安全_实验9 信息保密性、完整性和不可抵赖性的综合应用.doc

    数字签名 DSS/SHA-1、RSA/MD5 采用SHA-1或MD5消息摘要算法计算消息的摘要值(散列码),用发送者的私钥按DSS或RSA算法加密消息摘要 压缩 PKZIP 消息在传送和存储时可使用PKZIP压缩 E-mail兼容性 Radix-64 对E-mail...

    网络安全复习.docx

    对称算法优点:力[1/解密速率快,密钥管理简单,适宜一对一的信息加密传输 对称算法缺点:加密算法简单,秘钥长度有限,加密强度不髙,密钥分发困难,不适宜一对 多的加密信息传输 非对称算法优点:安全性好,其...

    中文版RFC,共456

    RFC2040 RC5, RC5-CBC, RC5-CBC-Pad,和 RC5-CTS算法 RFC2042 注册新BGP属性类型 RFC2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC2053 AM (美国)域 RFC2078 通用安全服务应用...

    WINRAR5.0正式注册版

    件校验和被修改使用一种特殊的密码依赖算法,不可能基于校验和猜测文件内容。不 要期待这样的加密文件校验和匹配常规和 BLAKE2 和 CRC32 值。 7. RAR 5.0 压缩文件可以使用 256位的 BLAKE2sp 哈希( ...

    RFC中文文档-txt

    RFC2040 RC5, RC5-CBC, RC5-CBC-Pad,和 RC5-CTS算法 RFC2042 注册新BGP属性类型 RFC2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC2053 AM (美国)域 RFC2078 通用安全服务应用...

    rfc中文文档目录,包含部分翻译

    RFC2040 RC5, RC5-CBC, RC5-CBC-Pad,和 RC5-CTS算法 RFC2042 注册新BGP属性类型 RFC2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC2053 AM (美国)域 RFC2078 通用安全服务应用...

    购物商城系统源代码--036

    时代网联信息科技有限公司具有丰富的 web 应用程序设计经验,尤其在购物系统产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术,使得时代商城购物系统无论在稳定性、负载...

    问答系统的系统设计方案.pdf

    ⽤户表的密码通常使⽤MD5等不可逆算法加密后存储,为防⽌彩虹表破解更会先使⽤⼀个特定的字符串加密,然后再使⽤⼀ 个随机的salt加密。 特定字符串是程序代码中固定的,salt是每个密码单独随机,⼀般给⽤户表加⼀个...

    Discuz! 3.1.2 商业版

    可以在极为繁忙的服务器环境下快速稳定运行 在用户资料存储中和传递中,密码全部使用 RSA-MD5 不可逆加密,有效保证论坛及用户资料的安全. 专门为脆弱页面设计了防刷新系统,自动阻止恶意访问和攻击. Discuz! 独有的...

    EmpireCMS 5.1程序源码繁体开源 BIG5

    5、安全性方面更强: (1)、管理员密码采用双重md5模式,防止密码泄漏被********; (2)、登录新增认证码功能,要同时满足密码跟认证码同时正确才能登录,此功能可防止非法用户知道密码也无法登录; (3)、登录次数限制...

    eris:Java随机数生成器

    为性能而设计:实现在内部不提供任何线程安全保证(例如,同步或使用易失性字段),而是希望在单线程用例中提供改进的性能。 简洁性:核心API非常简单和简约(遵循“在有疑问时将其遗忘”的口号),确保了易用性。 ...

    asp.net知识库

    常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN...

    1345个易语言模块

    MD5 取数据摘要.EC MDB到超级列表框.ec mhs.ec misc1.ec mmqrOICQ.ec mp3信息模 块.ec MTH文件编码模块.ec Mx.Shuai模块.ec ns.ec NT系统服务.ec OCX控件高级注 册.ec ODBC方式填充树型框.ec ontop.ec PGBEAPICopy....

    EmpireCMS程序源码开源 5.1 GBK

    5、安全性方面更强: (1)、管理员密码采用双重md5模式,防止密码泄漏被********; (2)、登录新增认证码功能,要同时满足密码跟认证码同时正确才能登录,此功能可防止非法用户知道密码也无法登录; (3)、登录次数限制...

    EmpireCMS 5.1程序源码开源繁体 UTF8

    5、安全性方面更强: (1)、管理员密码采用双重md5模式,防止密码泄漏被********; (2)、登录新增认证码功能,要同时满足密码跟认证码同时正确才能登录,此功能可防止非法用户知道密码也无法登录; (3)、登录次数限制...

    EmpireCMS程序源码开源 5.1 UTF8

    5、安全性方面更强: (1)、管理员密码采用双重md5模式,防止密码泄漏被********; (2)、登录新增认证码功能,要同时满足密码跟认证码同时正确才能登录,此功能可防止非法用户知道密码也无法登录; (3)、登录次数限制...

    Zoomla!逐浪CMS v8.1.5

    引入全新的黑名单与白名单功能,系统具备域级的管理,提升平台的安全性。 更加易用的内容管理系统-全部优化更加易用 配合全新的逐浪文本大师,提升用户的使用功能,导库、入库、出库,一切自由方便。 完善的生态链,...

Global site tag (gtag.js) - Google Analytics