我有一个javascript string.prototype,它为字符串创建一个哈希值。 JS:
String.prototype.hashCode = function () {
var hash = 5381, i = this.length
while (i)
hash = (hash * 33) ^ this.charCodeAt(--i)
return hash >>> 0;
}
我需要在C#中为另一个使用相同数据库的应用程序重新创建此哈希。以下是我到目前为止......
public string hashCode(string password)
{
var hash = 5381;
int i;
string newHash = "";
int index = password.Length;
for (i = 0; i > index; i++)
hash = (hash * 33) ^ (char)password[--index];
hash = (int)((uint)index >> 0);
newHash += hash;
return newHash;
}
如果有人能指出我正确的方向,我们将不胜感激!
谢谢!
答案 0 :(得分:1)
代码的错误很少。
public string hashCode(string password)
{
int hash = 5381;
int i = password.Length;
while(i > 0)
hash = (hash * 33) ^ (char)password[--i];
hash = (int)((uint)i >> 0);
return hash.ToString();
}