Home  >  Article  >  Database  >  MySQL的HASH定制

MySQL的HASH定制

WBOY
WBOYOriginal
2016-06-07 16:52:261168browse

MySQL在密码加密上采用非常安全的策略,而绝非某些三流选手所称脆弱。但是稍有密码学常识的人都知道,无论一个多么良好的算法都忌

MySQL在密码加密上采用非常安全的策略,而绝非某些三流选手所称脆弱。但是稍有密码学常识的人都知道,无论一个多么良好的算法都忌讳将密钥或者种子数等公开。一旦公开这些东西,做出逆算程序并实际破解只是一个时间上的问题。

前些日子,也就是2003年5月5日MySQL的HASH逆运算程序被公开在互联网上。这促使我将自己所了解的MySQL密码定制方法同大家分享。

整个密码的加密部分由password.c文件控制。在这个文件中的hash_password函数控制密码hash的产生。

QUOTE:
void hash_password(ulong *result, const char *password)
{
register ulong nr=1345345333L, add=7, nr2=0x12345671L;
ulong tmp;
for (; *password ; password++)
{
if (*password == ' ' || *password == '\t')
continue; /* skipp space in password */
tmp= (ulong) (uchar) *password;
nr^= (((nr & 63)+add)*tmp)+ (nr nr2+=(nr2 add+=tmp;
}
result[0]=nr & (((ulong) 1L result[1]=nr2 & (((ulong) 1L return;
}


我们仅需要将这里的 nr=1345345333L add=7 nr2=0x12345671L 根据自己的需要进行修改重新编译,则互联网上公开的解密程序将彻底失效。记得,,万不可将自己定制后的nr add nr2告诉任何人,否则简单的修改解密程序仍然可以逆算出真实密码。实际测试中发现7位以上的密码逆算是相当耗费时间的,所以简单的更改密码长度大于7位也是可取的策略。

P.S 随机数的最大长度有rand_st->max_value控制,想改就改好了,我是不推荐你这样做。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn