原因:盐被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,散列值也是不同的。
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
扩展资料:
MD5相对MD4所作的改进:
1、增加了第四轮。
2、每一步均有唯一的加法常数。
3、减弱第二轮中函数的对称性。
4、第一步加上了上一步的结果,这将引起更快的雪崩效应(就是对明文或者密钥改变 1bit 都会引起密文的巨大不同)。
5、改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似。
6、近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。
参考资料来源:百度百科-MD5
一般是先加盐再用不可逆加密算法加密密码的,常见的有:sha1 sha256 md5等。
作用:这些加密算法,只能加密,不能逆向解密,所以使用这些算法。即时你的数据库被拖库,得到的人,也无法知道用户密码。
为什么加盐
举例
在注册时,
假设你的密码是1234,一般服务器会加一个盐(随便一个乱打的字符串),和你的密码加在一起,1234和efnU*(@#H!JKNF得到1234efnU*(@#H!JKNF这个值,然后再进行加密(这里我用md5)得到 91dc02c1fc2ce2252969e6b86173aa78,于是数据库里你的密码就变为了91dc02c1fc2ce2252969e6b86173aa78
登入时,
你输入1234, 然后服务器用和注册相同的步骤进行加密,得到加密后的值,91dc02c1fc2ce2252969e6b86173aa78,将这个值与数据库的加密值比对,如果正确则登入。
混淆用的,比如你写到数据库里面是MD5加密的,但是你用网上的解密工具一查就知道他的明文是什么。而如果你加了盐,也就是你的密码+盐,然后加密,那么加密出来的那串,别人就不知道他明文是什么了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)