是否仍有人在使用 MD5
说到密码学,阿粉现在真的是非常的头大,为啥呢?因为密码学真的是有点难度呀,各种各样的加密手段,各种各样的解密手段,像 MD5 呀,还有 RSA 呀,还有 DES 呀,反正就是一大堆,接下来的几天,阿粉就来逐个的分析一下这个关于密码中的各种加密手段,以及他们是如何使用的。 当时设计出来 MD4之后,就出现了两个不服气的人,非要证明这个玩意是不对的,关键是,这两个人还真的成功了,一个是Den boer 另外一个Bosselaers 这两个大哥,伙同一拨人,还真的找到了 MD4 的漏洞,找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,MD4就此被淘汰掉了。 其实总的来说,MD5 就是对一个不变的数据进行加密,而加密之后的字符串也是不变的,只要对元数据哪怕做一个简单的字符修改,那么通过 MD5 加密之后的密码数据,都会对应的做出改变,就相当于是一个人的 "指纹"。 Java实现 MD5 那真的是太简单了,实例代码如下: public class MD5 { /** * @param text明文 * @param key密钥 * @return 密文 */ // 带秘钥加密 public static String md5(String text, String key) throws Exception { // 加密后的字符串 String md5str = DigestUtils.md5Hex(text + key); System.out.println("MD5加密后的字符串为:" + md5str); return md5str; } // 不带秘钥加密 public static String md52(String text) throws Exception { // 加密后的字符串 String md5str = DigestUtils.md5Hex(text); System.out.println("MD52加密后的字符串为:" + md5str + "\t长度:" + md5str.length()); return md5str; } /** * MD5验证方法 * * @param text明文 * @param key密钥 * @param md5密文 */ // 根据传入的密钥进行验证 public static boolean verify(String text, String key, String md5) throws Exception { String md5str = md5(text, key); if (md5str.equalsIgnoreCase(md5)) { System.out.println("MD5验证通过"); return true; } return false; } } MD5 为什么被弃用了? 既然我们上面都说了 MD5 算是比较强大的了,为什么现在 MD5 会被大家弃用了呢? 一条信息的安全性取决于任何信息摘要函数的目标是产生看起来是随机的摘要。要被认为是加密安全的,哈希函数应该满足两个要求: 1,攻击者不可能生成一个与特定的哈希值相匹配的信息。 2,攻击者不可能创建两个产生相同哈希值的消息。 根据IETF,MD5哈希值不再被认为是加密安全的方法,不应该被用于加密认证。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |