Как с помощью Tarantool'а сгенерировать безопасный id для сессии длиной не менее 256 бит? - PullRequest
1 голос
/ 17 июня 2020

Tarantool должен возвращать строку из 256 бит, например: 40ee6e5a8195284884215c2fcd476a4e4ad9a65adde8eea3efcc15b93fb44d65

1 Ответ

3 голосов
/ 17 июня 2020

Встроенный модуль дайджест может быть использован для этой задачи. См. Пример:

tarantool> dg = require'digest'
---
...
tarantool> string.hex(dg.urandom(32))
---
- 3eeed423dd94abddbdeb0a27fea8f4926d77b75bb22f90b8cbb11530323c6d23
...

Конечно, лучше передать некоторую уникальную значимую информацию, относящуюся к сеансу, или уникальный идентификатор - для этого можно использовать uuid module или digest.urandom. Убедитесь, что сгенерированный ha sh является достаточно уникальным и не может быть перебран в течение времени существования сеанса - см., Например, этот ответ для объяснение.

Модуль digest также содержит несколько вариантов длин SHA и их аналоги, возвращающие шестнадцатеричные строки:

tarantool> dg.sha224_hex(dg.urandom(256))
---
- 6a8aa191d30f068a97c31a8c826d1b3e74d9890d57b8cbb7e2c65ca1
...
...