Хеши по сравнению с Числовым идентификатором

str() создает строку, подобную "['first', 'second', 'third', 'fourth']".

И s.join() обрабатывают строку как массив символов. Затем он помещает '/' между каждым элементом в массиве.

8
задан Karan 13 October 2008 в 05:32
поделиться

7 ответов

Если вы не пытаетесь скрыть состояние своего внутреннего счетчика идентификаторов объектов, хэши будут излишне медленными (для генерации и сравнения), излишне длинными, излишне уродливыми и излишне способными к конфликтам. GUID также длинные и уродливые, что делает их столь же непригодными для человеческого употребления, как и хэши.

Для вещей, подобных инвентарю, просто используйте вместо этого последовательный (или сегментированный) счетчик. Если вы переходите к другой базе данных, вам просто нужно будет инициализировать новый счетчик значением, по крайней мере, таким же большим, как ваш самый большой существующий идентификатор записи. Практически каждый сервер базы данных дает вам возможность сделать это.

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

5
ответ дан 5 December 2019 в 17:43
поделиться

Хеши, как гарантируют, не будут уникальны, ни, я верю, последовательный.

0
ответ дан 5 December 2019 в 17:43
поделиться

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

Не полагаясь на порядок Вы помещаете вещи в поле, но на свойствах вещей, просто кажется.. более безопасный.

Но не упустите коллизии, очевидно.

2
ответ дан 5 December 2019 в 17:43
поделиться

Я обычно использую хеши, если я не хочу, чтобы пользователь смог предположить следующий идентификатор в ряду. Но для Ваших книжных разделов, я придерживался бы числового идентификатора.

2
ответ дан 5 December 2019 в 17:43
поделиться

Ваши пользователи должны будут помнить/использовать значение? или Вы смотрите на него от безопасности POV?

С точки зрения безопасности это не должно иметь значения - так как Вы не должны только полагаться на людей, не предполагающих другой, но действительный идентификатор чего-то, что они не должны видеть для не допускания их.

0
ответ дан 5 December 2019 в 17:43
поделиться

Да, я не думаю, что Вы ищете хеш - Вы более вероятно ищете Гуид. Если Вы находитесь на платформе .NET, попробуйте Систему. Гуид.

Однако самая важная причина не использовать Гуид для производительности. Выполнение соединений базы данных и поисков на (длинных) строках является очень субоптимальным. Числа быстры. Так, если Вам действительно не нужен он, не делайте этого.

0
ответ дан 5 December 2019 в 17:43
поделиться

С хешами вы

  1. Вольны объединить базу данных с аналогичной (или создать резервную копию), если необходимо
  2. . Не делаете ничего, что могло бы хоть немного помочь некоторым атакам на угадывание.
  3. Не раскрывают больше личной информации о пользователе, чем необходимо, например, если кто-то видит пользователя номер 2 в вашем текущем входе в базу данных, он получает информацию о том, что он старый.
  4. (При условии, что вы используете длинный хэш или GUID), очень помогая себе, если вы куплены YouTube, и они решают интегрировать ваши базы данных.
  5. Помогая себе, если появляется поисковая система, которая индексирует по GUID.

Пожалуйста, дайте нам знать если последние 6 месяцев внесли ясность в этот вопрос ...

1
ответ дан 5 December 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: