Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “开发自己的”;“散列”;算法_Javascript_String_Algorithm_Math_Hash - Fatal编程技术网

Javascript “开发自己的”;“散列”;算法

Javascript “开发自己的”;“散列”;算法,javascript,string,algorithm,math,hash,Javascript,String,Algorithm,Math,Hash,所以我得到了一个介于1和10000之间的整数变量 我想把每个数字都转换成唯一的具有固定长度和自定义字符集(包括所有字母大小写字符)的哈希值 因此: n=10可以访问result=“AVduujANNiO” n=4507可以访问result=“BciidEPpaEo” 我真的不知道如何开发这样一个算法,所以这是我到目前为止得到的全部。我认为这个算法应该可以工作,但我当然会得到一个整数值作为散列,而不是字母值。不知道如何修复此问题,也不知道如何填充结果以使其具有固定长度 我真的希望有人能帮助我

所以我得到了一个介于
1和10000之间的整数变量

我想把每个数字都转换成唯一的
具有固定长度和自定义字符集(包括所有字母大小写字符)的哈希值

因此:

  • n=10
    可以访问
    result=“AVduujANNiO”

  • n=4507
    可以访问
    result=“BciidEPpaEo”


我真的不知道如何开发这样一个算法,所以这是我到目前为止得到的全部。我认为这个算法应该可以工作,但我当然会得到一个整数值作为散列,而不是字母值。不知道如何修复此问题,也不知道如何填充结果以使其具有固定长度

我真的希望有人能帮助我

let value=“3325”;
var getHash=函数(值){
设hash=0;
for(设i=0;ihash=(hash这里有一个hash函数,它似乎可以满足您的要求:)作为奖励,它在100000之前不提供冲突

函数h(n){
让我们=[
'0101000', '1011010', '0011111',
'1100001', '1100101', '1011001',
'1110011', '1010101', '1000111',
'0001100','1001000'].map(x=>parseInt(x,2));
设m=parseInt('101',2);
s=s.map(x=>{
n^=m;
m 25?71+x:65+x)
).加入(“”);
}
常数s={};

对于(让j=1;j这里有一个哈希函数,它似乎可以满足您的要求:)作为奖励,它在100000之前不提供冲突

函数h(n){
让我们=[
'0101000', '1011010', '0011111',
'1100001', '1100101', '1011001',
'1110011', '1010101', '1000111',
'0001100','1001000'].map(x=>parseInt(x,2));
设m=parseInt('101',2);
s=s.map(x=>{
n^=m;
m 25?71+x:65+x)
).加入(“”);
}
常数s={};

对于(让j=1;j我可以问一下为什么要这样做吗?使用11字节的字符串来表示14位的数字似乎是非常浪费的。很简单,只要您至少有10000个可能的哈希值可供选择。这取决于您的固定长度和所选的字符集。如果您的字符集只包含62个字母数字字符,那么您至少需要3个c。)字符。可以吗?请注意,这是“基本转换”,而不是“哈希”。使用您的整数为PRNG种子,然后简单地使用它从字母字符串中获取N个“随机”字符。为什么您要尝试创建自己的哈希算法?(我希望您没有尝试使用自己的加密)。您的哈希函数也应该有吗?我根本不会调用此哈希。听起来您真的想使用任意字符作为数字转换为任意基。请问您为什么要这样做?使用11字节字符串表示14位数字似乎非常浪费。很简单,只要您至少有10000个可能的hash值可供选择。这取决于您的固定长度和所选的字符集。如果您的字符集仅包含62个字母数字字符,则您至少需要3个字符。这样做可以吗?请注意,这是“基本转换”,而不是“散列”。使用整数为PRNG种子,然后仅使用它获取N“随机”字母表字符串中的字符。你为什么要尝试创建自己的哈希算法?(我希望你没有尝试使用自己的加密)。你的哈希函数也应该有吗?我根本不会称此哈希。听起来你真的想使用任意字符作为数字转换为任意基。