`
syyixin
  • 浏览: 36663 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

密码学之MD5

阅读更多
    对于广大Coder、SA等IT人士来说,密码学是一个很常见的词语。我们对重要数据进行加密处理,我们对登陆用户密码进行验证,我们……加解密是我们日常工作的一个重要组成部分。简单来讲,密码学是研究如何隐密地传递信息的学科,其中有一个用途广泛的算法我们不得不提,那就是MD5。
    MD5诞生已经有20余年,经历无数次的质疑与攻击后仍然坚挺,它简直是一个接近完美的算法。
    为何说MD5是接近完美而非完美?大家第一时间想到的或许是王小云教授。但王教授的方法显然不能称为破解,因为她只是在知道原文的情况下找碰撞而已。而破解是什么?破解是给出复杂算法的一个反函数,对MD5来说即拿到任何一个MD5值均能解出原文。幸运的是,这种情况并不会发生,因为MD5是用散列函数求解的,运算过程只是抽取到原文的一部分信息且加以重组,所以试图用一个32位16进制数去求解一个可能任意长度的字符串无疑是天方夜谭。可以看出,MD5是一个不可逆的算法,并且严格符合雪崩效应,仅仅是知道原文的情况下去理论上能找到碰撞这一瑕疵而已,所以说MD5是一个接近完美的算法。
    如果因为MD5因为有瑕疵导致你对MD5存在疑虑的话,那么你可以对其进行复杂处理来给自己增强信心。处理方法很多,比如用户登陆的密码,你存储用户密码的时候肯定是存的MD5值,毕竟涉及用户隐私。但是用户的密码通常来说是相对简单的,一般都是10位左右,直接生成MD5值的话如果数据库被泄露那么很难经受住上面所说的穷举法暴力破解攻击的;这时候如何处理呢?那就是加盐,并且这个盐不能简单到几位纯数字或字母。如果一些非常机密的信息需要加密的话,也可以采用复合算法进行处理,即可以使用两种或两种以上的加密算法一起使用。比如可以先用MD5对原文进行处理,然后用sha-1对原文进行处理,两个处理结果再进行一次sha-1或md5,那么这时候就算是找碰撞也是极其有难度,概率上可以称为不可能发生事件。
    当然,碰撞无疑是存在的,那怕是MD5、sha-1综合起来使用,这为伪造密文提供了可能。但是我们知道,密码学强调一个信息的时效性,也就是说信息仅在一定时间段内对决策具有价值。所以哪怕你用穷举法去为MD5找原文,对复杂的原文来说是无法找到的,因为MD5是对原文抽样处理,仅仅是一个摘要;对于稍微简单(比如长度小于32位)原文的MD5值来说,如果需要几百年甚至是几万亿年的话,那么这无疑也是安全的,因为这些信息在若干年后已经没有价值,就算找到原文也对信息拥有者来说无任何决策价值。
总之,MD5对绝大多数的使用者来说,在未来很长一段时间内都是非常安全的,可能是10年、20年、甚至是50年;唯一遗憾的是密码学的发展如此缓慢,以至于目前仍未找到革MD5命的算法。
    作者:忆辛,2014年11月25日写于羊城
1
0
分享到:
评论
1 楼 focus2008 2014-11-26  
http://www.iteye.com/news/28863-how-to-safely-store-a-user-password

相关推荐

    密码学试验MD5的源代码

    密码学试验MD5的源程序代码,是一个.cpp文件

    密码学MD5及散列函数

    散列函数和MD5是密码学中的两个核心概念,广泛应用于数据完整性验证、身份认证和数据加密等多个领域。 **MD5:不可逆的数字指纹** MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,由Ronald Rivest在...

    现代密码学.md

    现代密码学.md

    密码学-MD5 基于java源代码

    在密码学领域,MD5常用于数据完整性校验和密码存储。 Java是通用的编程语言,具有跨平台的能力,非常适合开发各种类型的应用,包括密码学相关的项目。在Java中实现MD5算法,可以使用`java.security.MessageDigest`...

    密码学实验MD5

    完整的代码 MD5 密码学实验 可运行出结果

    密码学MD5&RSA&DES源代码.

    在给定的压缩包文件中,包含有MD5、RSA和DES三种加密算法的源代码,这些都是密码学中非常经典的算法,对于理解密码学原理和技术具有重要意义。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以...

    MD5密码学实验报告加代码

    在本实验报告中,我们将深入探讨MD5在密码学中的应用,并通过编程实现DES(Data Encryption Standard)的加密与解密,以此加强口令安全。 MD5是一种非对称哈希算法,它将任意长度的输入(也叫做预映射或消息)转化...

    密码学:MD5+Mysql

    密码学是信息安全领域中的核心部分,它涉及到数据的加密、认证和完整性保护。在这个主题中,我们将重点关注MD5(Message-Digest Algorithm 5)哈希函数以及MySQL数据库系统在用户登录注册过程中的应用。 MD5是一种...

    密码学MD5加密算法实现源代码(vc++)

    MD5加密算法实现的源代码,vc++实现,如有错误请联系我!仅供参考学习!

    MD5_密码学_

    在密码学中,MD5被用来将任意长度的数据转化为固定长度的128位(16字节)摘要,这个摘要具有抗碰撞的特性,即相同的输入会产生相同的输出,而不同的输入几乎不可能产生相同的输出。 MD5的工作原理可以分为四个步骤...

    密码学实验含DES MD5 RSA

    我的密码学实验 有DES算法 MD5,RSA加密 有实验报告可供参考

    CTF之常见密码学攻击手法和实现.md

    CTF-crypto-入门-密码学

    jsp网页中用户登陆密码的MD5加密

    MD5加密是一种常用的密码学哈希函数,用于确保数据的完整性和_authentication。MD5算法是RSA Data Security公司在1992年发布的,用于生成一个128位的哈希值。MD5加密广泛应用于各种领域,包括数据存储、网络传输和...

    应用密码学&现代密码学

    又如消息认证码(MAC)和哈希函数(如MD5和SHA系列)用于保证数据的完整性。 现代密码学更关注于解决新的安全挑战,如量子计算对现有加密技术的威胁,这催生了后量子密码学的研究。此外,同态加密允许数据在加密...

    应用密码学:协议、算法与C源程序_.rar_应用密码学

    此外,还会讨论哈希函数和消息摘要,如MD5和SHA系列,它们在确保消息完整性和防篡改方面发挥着关键作用。 身份认证是密码学的另一重要方面,书中可能会涵盖基于密钥的认证协议(如Diffie-Hellman密钥交换)以及基于...

    应用密码学课件 胡向东

    MD5和SHA系列是常见的哈希函数,我们将了解它们的特性、碰撞攻击以及SHA-3等更安全的哈希算法。 5. 数字签名与证书:这部分会讲述数字签名如何提供身份认证和数据完整性,以及X.509证书在公钥基础设施中的作用,...

    现代密码学(杨波)

    3. **哈希函数**:哈希函数在密码学中的应用,如消息摘要(MD5、SHA-1、SHA-256等),它们在数据完整性验证和数字签名中的作用。 4. **数字签名**:数字签名的概念,它是如何提供数据来源认证和完整性保障的,以及...

    经典密码学与现代密码学

    此外,哈希函数(如MD5和SHA系列)和消息认证码(MAC)也是现代密码学的重要组成部分,它们用于验证数据的完整性和来源。 书中的内容可能还会涉及密码协议,如SSL/TLS用于网络通信的安全,PGP用于电子邮件的加密,...

    密码学实验(全部题目+完整代码:Hash算法MD5,DES-CBC,基于口令的加密,CBC-MAC,数字信封, 数字签名,DH).zip

    本实验涵盖了多个关键的密码学概念和技术,包括Hash算法的MD5、DES-CBC模式、基于口令的加密、CBC-MAC消息认证码、数字信封、数字签名以及Diffie-Hellman(DH)密钥交换协议。下面将对这些知识点进行详细阐述。 1. ...

    中科大密码学导论往年试卷.rar

    现代密码学基于数学理论,包括对称密钥加密(如DES、AES)、非对称密钥加密(如RSA、ECC)和哈希函数(如MD5、SHA系列)。 对称密钥加密是最早使用的加密方法,同一密钥用于加密和解密。AES(高级加密标准)是目前...

Global site tag (gtag.js) - Google Analytics