如何使用Tarantool生成至少256位长度的安全会话id?

Tarantool必须返回一个256位长度的字符串,例如: 40ee6e5a8195284884215c2fcd476a4e4ad9a65adde8eea3efcc15b93fb44d65

点赞
用户838231
用户838231

内置模块digest可以用于此任务。查看以下示例:

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

当然,最好传递一些与会话相关的唯一的有意义信息或唯一标识符 -- 可以使用 uuid 模块或 digest.urandom。确保生成的哈希值足够 独一无二 并且 在会话生命周期内不可能被暴力破解 -- 可以查看 这个回答 进行解释。

digest 模块还包含几个 SHA 长度的变体及其返回十六进制字符串的对应项:

tarantool> dg.sha224_hex(dg.urandom(256))
---
- 6a8aa191d30f068a97c31a8c826d1b3e74d9890d57b8cbb7e2c65ca1
...
2020-06-17 07:01:39