2017-01-03 6 views
0

Есть ли способ сжать/закодировать строку до указанной длины (символ 8/10).Кодировать строку до указанной длины с помощью любого algo

У меня есть комбинация секретного ключа и числового значения 16 цифр, и я хочу создать уникальный идентификатор с их комбинацией. длина которого должна быть между 8-12, и она не должна изменяться, если комбинация такая же.

Пожалуйста, предложите способ.

ответ

0

Если это 16 десятичных цифр, и ваша строка может содержать любые символы, то обязательно. Если вам нужно десять персонажей, вам понадобится 40 разных персонажей. 40 > 10 . Или для девяти символов, вам нужно 60 разных символов. 60 > 10 . Например. некоторое подмножество букв верхнего регистра, строчных букв и цифр (62 для выбора 40 или 60 из). Тогда это просто вопрос базового преобразования в любом случае. Преобразуйте с основания 10 на основание 40 или 60, а затем обратно.

Многие языки уже имеют процедуры кодирования Base-64, которые приведут вас к девяти символам.

Восемь является проблемой, так как вам нужно будет 100 символов (100 == 10), и только 95 печатных символов ASCII.

+0

На самом деле я не так уж разбираюсь в этом, не могли бы вы поделиться ссылкой на ссылку –

0

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

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

+0

Будет ли это уникальным ..? –

+0

@AnujJPandey с очень высокой вероятностью, да. Вы не сможете получить более низкую вероятность столкновения, не гарантируя, что никаких столкновений не произойдет. путем последовательного нумерации id (что является плохой идеей по другим причинам). –

 Смежные вопросы

  • Нет связанных вопросов^_^