我在.NET中启动了一个新项目,它使用MySql中的一些旧系统数据库。存储在mysql中的数据被周期性地传输到我们系统工作的MS Sql。
我需要用他们的登录名和密码来验证用户。用户密码存储为mysql旧密码函数生成的散列。
有没有办法用Ms Sql或.NET生成这样的散列呢?
最佳答案
我在http://www.yourhelpcenter.de/2009/06/mysql-alten-md5-hash-in-c-berechnen-16-stellig/找到了一个
public static string mysql_old_password(string sPassword)
{
UInt32[] result = new UInt32[2];
bool bDebug = false;
UInt32 nr = (UInt32)1345345333, add = (UInt32)7, nr2 = (UInt32)0x12345671;
UInt32 tmp;
char [] password = sPassword.ToCharArray();
int i;
for (i = 0; i < sPassword.Length; i++)
{
if (password[i] == ' ' || password[i] == '\t')
continue;
tmp = (UInt32)password[i];
nr ^= (((nr & 63) + add) * tmp) + (nr << 8);
nr2 += (nr2 << 8 ) ^ nr;
add += tmp;
}
result[0] = nr & (((UInt32)1 << 31) - (UInt32)1);
UInt32 val = (((UInt32)1 << 31) - (UInt32)1);
result[1] = nr2 & val;
string hash = String.Format("{0:X}{1:X}", result[0], result[1]);
return hash.ToLower();
}
关于.net - 在.NET或MS SQL中模拟MySql OLD_PASSWORD?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1243248/