gpt4 book ai didi

c - 有效地将随机字节转换为字符串而不会损失太多熵

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:16 32 4
gpt4 key购买 nike

我需要一个加密随机字符串作为我的 Web 应用程序中的 session 标识符。这是我当前使用 libsodium 的实现:

char session_id[81];
sprintf(session_id, "%"
PRIx32
"%"
PRIx32
"%"
PRIx32
"%"
PRIx32
"%"
PRIx32
"%"
PRIx32
"%"
PRIx32
"%"
PRIx32,
randombytes_random(), randombytes_random(), randombytes_random(), randombytes_random(),
randombytes_random(), randombytes_random(), randombytes_random(), randombytes_random());

生成的字符串示例如下:

36b95095192b4b3999804c95605aee06bd3381e4197cdfa5230a37425a863d40

我认为这是最明显的方式。这个问题是大部分键空间未被使用:即使我们忽略大小写,也有 36 个字母数字字符,但只有 16 个(0-9A-E,和来自 0X 前缀的潜在 X)将出现在结果字符串中。我如何通过使用更多的 key 空间来改进当前的方法?

转换应该尽可能高效,但另一方面我希望保留大部分随机性。请注意,如果该操作过于广泛,我不希望保留所有熵。相反,我在结果字符串的长度、性能和熵量之间寻求平衡。

我已经在我的项目中使用 libsodium 来实现其他功能,我想坚持使用它。除非你有充分的理由,否则请避免推荐另一个库。

最佳答案

正如在评论和事件中提到的,考虑到您的约束(存储在 HTTP cookie 中),似乎 Base64是最好的解决方案。

关于c - 有效地将随机字节转换为字符串而不会损失太多熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51550068/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com