md5可能确保唯一性吗?

yjp322 2015-09-30 02:28:54
加精
md5既然不能确保唯一性,也就是2个不同的东西可能加密出一样的东西,为什么现在好多地方处理加密还是会使用到,因为概率低吗?
...全文
24372 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangmeimao 2017-07-09
  • 打赏
  • 举报
回复
这里有个MD5的加密方式 http://blog.csdn.net/huangmeimao/article/details/74905569
514644743 2015-10-21
  • 打赏
  • 举报
回复
能保证的 md5
小灰狼 2015-10-21
  • 打赏
  • 举报
回复 1
引用 52 楼 ma514644743 的回复:
能保证的 md5
引用 53 楼 Itsjd 的回复:
md5可以确保唯一性,而且是不可逆的!不过是可以暴力破解的,abcd加密后是1a2b3c4d这样,那么你可以使用数据字典,也让你字典里的字符串md5加密。如果结果一样就匹配成功了。反之也可以
能保证唯一?? 具体算法不去计较,MD5的结果都是128位,最多是2^128种可能的结果;而实际上可能用于参与MD5计算的原始数据可远远不止这么多种,不出现重复,可能吗?
DY1201 2015-10-21
  • 打赏
  • 举报
回复
md5可以确保唯一性,而且是不可逆的!不过是可以暴力破解的,abcd加密后是1a2b3c4d这样,那么你可以使用数据字典,也让你字典里的字符串md5加密。如果结果一样就匹配成功了。反之也可以
chunqi9896 2015-10-20
  • 打赏
  • 举报
回复
只是来学习,手脚了,以前一直认为MD5好NB的样子,现在才有点懂MD5了
自然80 2015-10-20
  • 打赏
  • 举报
回复
MD5是数字指纹。 如果工资表用MD5码,如果有人改动工资表,MD5码变。 如果没有范围,当然MD5码会有几率重复,如果有范围,比如 两个不同的工资表 MD5码相同 就比较难了。
我叫小菜菜 2015-10-17
  • 打赏
  • 举报
回复
学习了~~其实md5现阶段来说仍旧是一种比较可靠的验证算法,实际应用还是很广泛的。数据库的字段加密已经足够了。 现阶段对于一般应用,md5验证+guid主键的设计组合就足矣
zghaofeng 2015-10-16
  • 打赏
  • 举报
回复
加salt 的意义在于预防字典攻击,如果被加密的字符串是无意义的字符串,不需要加salt password 经常会是有意义的字符串,所以要加salt,如果password 有规则要求(必须包含字母数字等等),就不需要加salt。
wangshijie2019 2015-10-14
  • 打赏
  • 举报
回复 1
引用 3 楼 csc0211 的回复:
md5不是用来加密的,一般的意义上来说,一段文字或者文件,你加密后是要能够解密的,所有md5严格意义上来说,不是用来加密的。
在我看来,md5是用来确保一个文件或者一段文字不被串改的工具,但也只是众多工具中的一种。比如你在网上下载了一个文件,其md5值与源文件的md5值一致,说明文件被串改的可能行很小,所以一般的网站在下载文件时除了给出md5值,还给出了sha1值,就是这个道理。
在实际的项目开发中,用户的密码,一般会经过md5后存入数据库,验证的原理跟上文一致。楼上说的很对,一般存储密码是都会加salt后在计算md5值:md5(password + salt)或者多次md5:md5(md5(password)),这样其实可保证密码的安全性。
问下哈 注册时 md5(password + salt) 这个salt 是随机产生的 之后这个密码保存到库里面了 用户登录的时候 这个 salt 怎么来呢
树成 2015-10-14
  • 打赏
  • 举报
回复 1
引用 45 楼 wangshijie3396046 的回复:
问下哈 注册时 md5(password + salt) 这个salt 是随机产生的 之后这个密码保存到库里面了 用户登录的时候 这个 salt 怎么来呢
md5的散列值和原文是一一对应的,即是,一个原文散列后的结果必定是一个值,这和通用加密因为key不同,不同密文得出的加密数据是不同的不一样,因此很多时候只要建一个库,把原文和密文一一对应就能很容易套出原有密码,但是加了solt之后,就套不出来了。
树成 2015-10-14
  • 打赏
  • 举报
回复
md5是用来做消息摘要的,不是加密算法,当然它可以作为普通的密码验证字串作为保存来屏蔽密码泄露。任何散列算法都是会碰撞的,毕竟将任意数据散列为一个固定长度的整数不出现重复是不可能的,但是为了验证数据有效性的消息摘要算法,需要保证散列的雪崩性——即是越是相近的数据散列出来的结果差异越大,由此特性来明确数据的差异能做到覆盖任何情况,毕竟两个差异过于明显的数据是不需要用散列来认证的。 举个例子来说,一般现在网上实现了很多网盘的功能的急速秒传就是通过散列来认证服务器是否存在相同文件,而且算法很多是sha1(和md5相同功能但是更加高级精确的散列算法),但是就芸芸众多文件而已,不发生碰撞是不可能的,但是为什么还是可以用这个算法来认真,就是因为算法本身的雪崩性,两个发生碰撞的数据,其差异很有可能异常巨大,如果发生碰撞,只要稍微判断一下其它项即可解决,例如数据长度,数据首N个数据段或者尾N数据段进行匹配即可。
winner2050 2015-10-13
  • 打赏
  • 举报
回复
自己计算一下10个数字和26个字母组合能有多少种组合。

从MD2开始还远没有重复的时候就已经升级了。计算机性能越来越强劲,但是还不足以轻易的通过碰撞的方式破解密码。
winghui05 2015-10-13
  • 打赏
  • 举报
回复
不太行吧? MD5已經有方法解密, 不太安全
牧歌ing 2015-10-13
  • 打赏
  • 举报
回复
就像楼主说的,出现相同的概率确实极低。
Conmajia 2015-10-12
  • 打赏
  • 举报
回复 1
楼上说MD5是加密算法的都可以辞职回家复习准备明年再高考了。。
qq_31942845 2015-10-12
  • 打赏
  • 举报
回复
帮顶 帮顶 帮顶
gzg9002 2015-10-12
  • 打赏
  • 举报
回复
活到老学到老。。
sca4441479 2015-10-12
  • 打赏
  • 举报
回复
秘钥不一样,不同字符串加密后就可能会有相同的结果
zw_2013 2015-10-09
  • 打赏
  • 举报
回复
不能保持唯一性。。。
  • 打赏
  • 举报
回复
引用 27 楼 pathletboy 的回复:
[quote=引用 22 楼 shijing266 的回复:] 其实,MD5加密之后不唯一是因为加密之前的值是一样的,当你的值不一样的时候,就能保证唯一性 我的建议:能否在加密之前,对参数拼接一个随机数或者自增数来保证
加密前不一样的值,也可能出现相同的MD5,你想想就知道了,就这么长的MD5,能表示无穷的情况?只是这个概率极低罢了。[/quote] 也对,毕竟MD5加密后就这么长 ,想确保唯一,考虑其他算法吧
加载更多回复(33)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧