BigQuery - 确定性 UUID

问题描述 投票:0回答:1

我正在尝试为派生数据模型和一个本身没有它的实体创建一个 UUID。

GENERATE_UUID()
每次运行它都会给我不同的值,但我正在寻找可以使用实体现有属性的东西。

到目前为止我做到了

SELECT
  MD5(SHA512(CONCAT(<attr1>, <attr2>)))

我知道单独使用 MD5 是不安全的,但如果我先使用 SHA512 对其进行哈希处理,这是一个可行的解决方案吗?或者就安全性而言,因为它是确定性的、基于数据的,而不是完全随机的,所以它不会安全?

google-bigquery
1个回答
0
投票

结合使用

MD5
SHA512
等哈希算法,根据实体的现有属性生成 UUID 式 值在某些情况下可能是可行的解决方案。但是,在安全性和唯一性方面需要牢记一些注意事项。

使用基于现有属性的哈希等确定性方法意味着,如果输入属性相同,则输出的类似 UUID 的值也将相同。这对于一致性和可重复性来说是有利的,但可能无法提供与真正的 UUID 相同水平的唯一性。

虽然组合哈希算法可以在一定程度上增强安全性,但值得注意的是,MD5 被认为在密码学上已被破坏,不应该依赖于安全关键型应用程序。 SHA512 更安全,但将其与 MD5 结合使用并不能完全缓解 MD5 的弱点。

尽管使用多个哈希函数时发生冲突(两个不同的输入产生相同的输出)的可能性会降低,但它仍然是可能的,特别是在输入空间有限或可预测的情况下。这意味着虽然生成的值对于您的特定用例来说可能足够唯一,但它们可能不具有与真实 UUID 相同级别的唯一性保证。

总而言之,虽然使用 MD5 和 SHA512 等哈希算法的组合可以基于现有属性提供类似 UUID 的值,但必须仔细考虑特定用例的安全性、唯一性和性能方面的权衡。此外,建议评估 UUID 生成的替代方法,以确保您的解决方案有效满足您的要求。

© www.soinside.com 2019 - 2024. All rights reserved.