2017-02-13 12 views
0

У меня есть простая проблема, которую я не могу решить из-за моей нехватки знаний, и я не мог найти подсказки в Интернете.Создайте значение из списка чисел

Я хотел бы:

  • Сформировать «значение 1» из списка числа (массив межд).
  • Создайте «значение 2» из случайного числа.
  • Затем проверьте наличие случайного числа в списке числа, сравнив значение «2» со значением «1».

Почему я хотел бы генерировать эти значения вместо простого поиска массива случайного числа в списке чисел?

Поскольку существует необходимость скрывать список номеров и быть в состоянии выполнить быструю проверку, просто сравнивая значения.

Я думал о методе «хэш», но не существует способа хеширования массива int.

Я также подумал о криптосистеме RSA, сгенерировал «закрытый ключ» из списка номеров и затем сгенерировал «лобковый ключ» из случайного числа. Но я не мог найти способ его реализовать.

Хотелось бы узнать, есть ли способ сделать то, что я хотел бы сделать?

Благодарим за помощь.


Пример:

сервер в PHP есть список числа. (Пример: [10, 20, 24, 6, 98])

Клиент в JS отправляет номер на сервер. (Пример: 8)

Затем

// [10, 20, 24, 6, 98] to hashed or key 
$computedIntArray = HashedOrRsaEncrypted($ServerIntArray); 

// 8 to hashed or key 
$computedClientNumber = HashedOrRsaEncrypted($ClientNumber); 

// return true if the clienthashedvalue is present in the serverIntArray 
$trueOrFalse = IsPresentInArray($computedClientNumber, $computedIntArray); 

ответ

0

для генерации, например, 10, не повторяя случайных чисел, можно использовать хэш-таблицу.

var hash = {}, 
 
    l = 10, 
 
    r; 
 

 
while (l) { 
 
    r = Math.floor(Math.random() * 100); 
 
    if (!hash[r]) { 
 
     hash[r] = true; 
 
     l--; 
 
    } 
 
} 
 

 
console.log(Object.keys(hash).map(Number));
.as-console-wrapper { max-height: 100% !important; top: 0; }

С ES6, вы могли бы использовать Set и добавить значение, пока размер набора не имеет разыскиваемого счет.

var hash = new Set, 
 
    l = 10; 
 

 
while (hash.size < l) { 
 
    hash.add(Math.floor(Math.random() * 100)); 
 
} 
 

 
console.log([...hash]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Я думаю, вы поняли мой вопрос. Речь идет не о генерации случайного числа, а о генерации хэша или закрытого ключа или значения из списка чисел и делать то же самое для случайного числа (например, 5). Затем можно сравнить хэш или ключи (private/public) или значение, чтобы узнать, присутствует ли случайное число в списке номеров. – NoSkiiilL

+0

справа, для тестирования, если номер уже используется, вы можете использовать либо объект как хэш-таблицу, либо набор. но где проблема? –

+0

Я отредактировал мое сообщение и добавил пример. Я начинаю думать, что, возможно, вещь, которую я хотел бы сделать, невозможен.Извините, я не могу найти другой способ выразить себя, английский не мой родной язык. Спасибо, что помогли. – NoSkiiilL