一般是先加盐再用不可逆加密算法加密密码的,常见的有:sha1 sha256 md5等。
作用:这些加密算法,只能加密,不能逆向解密,所以使用这些算法。即时你的数据库被拖库,得到的人,也无法知道用户密码。
为什么加盐
举例
在注册时,
假设你的密码是1234,一般服务器会加一个盐(随便一个乱打的字符串),和你的密码加在一起,1234和efnU*(@#H!JKNF得到1234efnU*(@#H!JKNF这个值,然后再进行加密(这里我用md5)得到 91dc02c1fc2ce2252969e6b86173aa78,于是数据库里你的密码就变为了91dc02c1fc2ce2252969e6b86173aa78
登入时,
你输入1234, 然后服务器用和注册相同的步骤进行加密,得到加密后的值,91dc02c1fc2ce2252969e6b86173aa78,将这个值与数据库的加密值比对,如果正确则登入。
MySQL数据库的认证密码有两种方式,MySQL
4.1版本之前是MySQL323加密,MySQL
4.1和之后的版本都是MySQLSHA1加密,
MySQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MySQL数据库里进行查询,前者是MySQL323加密,后者是MySQLSHA1方式加密。
(1)以MySQL323方式加密
select old_password('111111')
(2)以MySQLSHA1方式加密
select
password('111111')
MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入实际的密码运算中,通过观察在很多用户中都携带了"*",在实际破解过程中去掉"*",也就是说MySQLSHA1加密的密码的实际位数是40位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)