什么是生成唯一会话ID的最佳方式?

问题描述:

我想生成一个16个字符的字母数字会话ID字符串。这样做的最好方法是什么,以确保每次生成的字符串都是唯一的?什么是生成唯一会话ID的最佳方式?

注意:我将使用C++生成会话ID。

通常,您会使用任何语言/操作系统服务提供此类服务来创建GUID。通常可用的GUID是16个字节长,其在十六进制表示中将是32个字符。你可以base64对它进行编码并稍微缩小(22个字符左右)。你真的需要正好16 个字符

+0

如何在C++ for UNIX中创建GUID? C++中是否有可用的API? – user32262 2009-12-05 19:04:54

+0

在Linux和其他平台上,您可以使用'libuuid':http://linux.die.net/man/3/libuuid或者,您可以使用'uuidgen' shell命令。 – 2009-12-05 20:14:36

+0

我在几个不同的地方(包括SO)阅读了GUID是可预测的。这会在使用会话ID时引入安全风险吗? – aggregate1166877 2014-03-05 22:08:58

使用GUID。你如何生成一个将取决于你正在运行的平台。