使用我自己的算法创建GUID

Creating a GUID using My Own Algorithm

本文关键字:创建 GUID 算法 自己的 我自己      更新时间:2023-10-16

我需要为一个将Xmp数据插入到文件中的应用程序创建一个文档GUID。用c++编写,应用程序将是跨平台的,所以我想避免使用可能产生兼容性问题的库。

我想做的是通过连接我的应用程序的名称加上自epoch以来的秒数加上为完整文件计算的SHA256哈希的适当字符数来创建一个字符串(无论如何,出于另一个原因,我将这样做)。

产生的结果是否足以保证碰撞"在实践中足够不可能"?

除非你期望生成大量的文档,否则单独使用SHA256绝对有可能避免任何冲突。如果你的应用程序在其生命周期内生成少于10^29个文档,那么任何冲突的机会小于1/10^18(假设SHA256设计良好)。

这意味着在发生0.0000000000000001%的碰撞之前,大约世界上的每个人(7e9)都可以使用你的应用程序每秒生成1e9个文档,持续1000年。

如果您愿意,可以添加更多位(如名称和时间),但为了避免冲突,这几乎肯定是多余的。