sha2(256,columns())) 在 ADF 中计算安全吗?

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

我正在尝试计算 Azure 数据工厂中某些列的哈希值。我在其他问题中看到了使用

sha2(256,columns()))
等函数的建议。乍一看这似乎很安全,但我发现这两个表达式生成相同的哈希值:

sha2(256, "ABC", "DEF")
sha2(256, "AB", "CDEF")

所以看起来哈希函数在传递多个参数时,只需在生成哈希之前将它们连接在一起即可。由于上面的源数据相同但生成相同的哈希值,这似乎没有达到您的预期。

是否有从不同数据(如上面的“ABC”、“DEF”和“AB”、“CDEF”)生成不同哈希的最佳实践,特别是当涉及到动态生成的列列表时?还是我错过了什么?

azure-data-factory
1个回答
0
投票

我确实同意@Martin,在数据之间添加一个字符串可能是解决方法。

如果您想对所有传入列动态执行此操作,首先需要在连接的列数据之间添加一个恒定的唯一字符串。要为不同索引处的所有行动态添加它,请使用以下表达式。

concat(left(concatWS('',columns()),mod(length(concatWS('',columns())),10)),'HiRakesh',substring(concatWS('',columns()),add(mod(length(concatWS('',columns())),10),1)))

它将在随机索引处添加字符串

HiRakesh
,如下所示。

enter image description here

现在,在下一次转换中在此列上使用

sha2(256,<column_name>)
即可获得结果。

enter image description here

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