您的位置:首页 > 其它

谈谈我过去认识的哈希函数

2018-01-09 20:14 260 查看
      在工作中,遇到一些字符类型数据的去重,需要简短处理来保存,这时自然想到了哈希处理,一直认识中,哈希就是写代码形成的,字符的长度也是随意的。知道一步步看到md5,sha-1等,才知道,我理解的对,又不对,md5就是hash函数的一种。

首先要给出摘自文章从Hash函数到MD5破解

哈希值的定义:

       hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。通俗得说,hash函数用来生成信息的摘要。输出字符串的长度称为hash函数的位数

目前应用最为广泛的hash函数是SHA-1MD5,大多是128位和更长。

hash函数在现实生活中应用十分广泛。很多下载网站都提供下载文件的MD5码校验,可以用来判别文件是否完整。另外,比如在WordPress的数据库,所有密码都是保存的MD5码,这样即使数据库的管理员也无法知道用户的原始密码,避免隐私泄露(很多人在不同地方都是用的同一个密码)。

如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是必然存在的。

那么哈希值的两个属性:可重复和不可逆。

理想的哈希函数可以针对不同的输入得到不同的输出,如果存在两个不同的消息得到了相同的哈希值,那我们称这是一个碰撞。

我的感觉只有一个字:真TM坑爹。因为我的想法是短处理,去重用,却会重复是什么鬼。我只能另想别的方案了。

另外:特别需要注意的是:很多人觉得md5是加密算法,nonono,它不是,它是摘要算法,不可逆谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  哈希 md5 加密