我正在尝试创建一种从字符串[a-z]生成两个 Intergers 的方法 Nodejs 中最大长度为10个字符, 例如:
var arr=hashfn("subdomain");
" arr
"与[55,111]
类似,这是一个自动创建具有两个端口(http,https)的节点服务器应用程序的想法,
我正在尝试使用MD5哈希(32个字符),并将4个第一个字符串子化为arr [0],将4个字符串子化为arr [1],但我不知道这个方法是否好!
答案 0 :(得分:0)
我想我找到了解决方案,使用djb2哈希算法,
来源:http://www.cse.yorku.ca/~oz/hash.html
function hashfn(s) {
var xhash = 0,c=0,i=0;
while (c = s[i++])
xhash = ((xhash << 5) + xhash) + c.charCodeAt(0) -48; // 48 is the 0 (ascii)
return xhash;
}
var subdomain="www";
var arr={};
shasum.update(subdomain);
var hash=shasum.digest('hex');
arr.httpchars=hash.substr(0,3);
arr.httpschars=hash.substr(3,3);
arr.httpport=hashfn(arr.httpchars);
arr.httpsport=hashfn(arr.httpschars);
console.log(hash,arr);
<强>控制台:强>
感谢。