Могу ли я хешировать UUID для более высокой энтропии - Python - PullRequest
0 голосов
/ 19 ноября 2018

Если я сгенерирую UUID с чем-то вроде

ID = uuid.uuid4()

, я получу 128-битную строку с 122-битной энтропией.

Однако мне нужна строка с более чем 128 битами энтропии.

Как изменится энтропия строки, если я добавлю этот uuid через функцию хеширования.

, например:

ID = uuid.uuid4()
ID = HASHFUNC(ID)

или даже:

ID = uuid.uuid4()
Salt = someString
ID = HASHFUNC(ID+Salt)

Лучше просто использовать os.urandom (32) и покончить с этим?

Спасибо за помощь

1 Ответ

0 голосов
/ 19 ноября 2018

Нет, вы не можете.

Хотя хеширование строки с 2 122 возможными значениями даст вам 128-битный результат, все еще есть только 2 122 возможных результатов, поэтому ваши хешированные UUID все еще содержат только 122 бит информации каждый.

Либо используйте os.urandom(16) (поскольку для 128-битной энтропии достаточно 16 байтов), либо модуль secrets (если вы используете Python 3.6).

...