SQL Hive - MD5 哈希

问题描述

使用 sql Hive 函数 md5() 生成 32 个字符的 MD5 哈希。在 Hive 中有没有办法在不影响输出完整性的情况下减少字符限制?不幸的是,我对某些无法更改的列有限制。

我试图屏蔽一些数据字段,并认为使用 MD5 是最好的选择,但我对其他方法持开放态度。我知道可以使用 rand() 函数,但希望避免它。

解决方法

使用 CRC32 或 hash256 并将值截断为所需的长度,如果您不需要加密强算法,这将足够好。 sha256 截断后发生冲突的可能性较小,我推荐它。

示例:

select crc32('Some test message') AS CRC32,sha2('Some test message',256) as sha256,substr(sha2('Some test message',256),1,10) as sha256truncated

结果:

crc32       sha256                                                              sha256truncated
111182007   43bf899ff002b5fa8e0510b22943ee5c15e467e26fe777d0740ba004ebf3a28d    43bf899ff0