我需要为将Xmp数据插入文件的应用程序创建文档GUID。用C ++编写的应用程序将是跨平台的,所以我想避免使用可能产生兼容性问题的库。
我想要做的是通过连接我的应用程序的名称加上自纪元以来的秒数加上为完整文件计算的SHA256哈希中的适当字符数来创建字符串(我将是无论如何还是出于另一个原因)。
产生的结果是否足以保证碰撞在实践中不太可能"?
答案 0 :(得分:2)
除非您期望生成大量文档,否则使用SHA256本身绝对有可能避免任何冲突。如果您的应用在其生命周期内生成的文档少于10 ^ 29,则任何冲突的可能性为less than 1 in 10^18(假设SHA256设计得很好)。
这意味着世界上大多数人(7e9)可以使用你的应用在1000年内每秒生成1e9个文档,然后发生碰撞的可能性为0.0000000000000001%。
如果您愿意,可以添加更多位(如名称和时间),但为了避免碰撞,这几乎肯定会过度。