谈谈我过去认识的哈希函数
2018-01-09 20:14
302 查看
在工作中,遇到一些字符类型数据的去重,需要简短处理来保存,这时自然想到了哈希处理,一直认识中,哈希就是写代码形成的,字符的长度也是随意的。知道一步步看到md5,sha-1等,才知道,我理解的对,又不对,md5就是hash函数的一种。
首先要给出摘自文章从Hash函数到MD5破解
目前应用最为广泛的hash函数是SHA-1和MD5,大多是128位和更长。
hash函数在现实生活中应用十分广泛。很多下载网站都提供下载文件的MD5码校验,可以用来判别文件是否完整。另外,比如在WordPress的数据库,所有密码都是保存的MD5码,这样即使数据库的管理员也无法知道用户的原始密码,避免隐私泄露(很多人在不同地方都是用的同一个密码)。
如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是必然存在的。
那么哈希值的两个属性:可重复和不可逆。
理想的哈希函数可以针对不同的输入得到不同的输出,如果存在两个不同的消息得到了相同的哈希值,那我们称这是一个碰撞。
我的感觉只有一个字:真TM坑爹。因为我的想法是短处理,去重用,却会重复是什么鬼。我只能另想别的方案了。
另外:特别需要注意的是:很多人觉得md5是加密算法,nonono,它不是,它是摘要算法,不可逆谢谢!
首先要给出摘自文章从Hash函数到MD5破解
哈希值的定义:
hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。通俗得说,hash函数用来生成信息的摘要。输出字符串的长度称为hash函数的位数。目前应用最为广泛的hash函数是SHA-1和MD5,大多是128位和更长。
hash函数在现实生活中应用十分广泛。很多下载网站都提供下载文件的MD5码校验,可以用来判别文件是否完整。另外,比如在WordPress的数据库,所有密码都是保存的MD5码,这样即使数据库的管理员也无法知道用户的原始密码,避免隐私泄露(很多人在不同地方都是用的同一个密码)。
如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是必然存在的。
那么哈希值的两个属性:可重复和不可逆。
理想的哈希函数可以针对不同的输入得到不同的输出,如果存在两个不同的消息得到了相同的哈希值,那我们称这是一个碰撞。
我的感觉只有一个字:真TM坑爹。因为我的想法是短处理,去重用,却会重复是什么鬼。我只能另想别的方案了。
另外:特别需要注意的是:很多人觉得md5是加密算法,nonono,它不是,它是摘要算法,不可逆谢谢!
相关文章推荐
- 谈谈对于vmware Workstation 网络连接三种模式的认识.
- 谈谈J2SE中的序列化之一个感性的认识
- Android面试之----谈谈你对Java中Native关键字的认识!
- 让我们来谈谈对Linux的认识,值得每一位运维人员深读
- 谈谈对AOP的认识二——AOP概念术语理解
- 谈谈我对资本主义和社会主义的一点认识
- 谈谈对布局文件、自定义控件、Fragment、Activity的认识
- 谈谈我对Ext的认识,元芳,你怎么看
- 谈谈对软件开发过程的认识
- 谈谈我对CSS的认识
- 谈谈你对面向对象编程的认识
- 让我们来谈谈对Linux的认识,值得每一位运维人员深读
- 谈谈我对C++的认识
- Android面试之----谈谈你对Java中Native关键字的认识!
- 谈谈我对资本主义和社会主义的一点认识
- 让我们来谈谈对Linux的认识,值得每一位运维人员深读
- 谈谈吧,谈谈现在谈谈过去谈谈未来
- 谈谈我对京东的认识(3):麻雀和航母
- 【十五分钟Talkshow】谈谈我对开源的认识和理解
- 谈谈你对面向对象编程的认识