Redshift的SHA2与BigQuery的SHA256是否等价?结果差异咨询
问题原因
BigQuery的SHA256()函数返回的是Base64编码的SHA-256哈希值,而Redshift的SHA2(string, 256)返回的是十六进制字符串格式的哈希值,这是两者结果不同的核心原因。
解决方法
你可以通过以下两种方式让两边的哈希结果保持一致:
方式一:让Redshift输出和BigQuery一致的Base64格式
使用Redshift的ENCODE函数,将SHA2生成的十六进制哈希转换为Base64编码:
SELECT ENCODE(SHA2('testing', 256), 'base64');
执行结果:z4DNiu1ILV0VJ9fccvzv+E5jJlkoSER9LcCw6H38mpA=,和BigQuery的输出完全匹配。
方式二:让BigQuery输出和Redshift一致的十六进制格式
使用BigQuery的TO_HEX函数,将SHA256生成的Base64哈希转换为十六进制字符串:
SELECT TO_HEX(SHA256('testing'));
执行结果:cf80cd8aed482d5d1527d7dc72fceff84e6326592848447d2dc0b0e87dfc9a90,和Redshift的输出完全匹配。
内容的提问来源于stack exchange,提问作者paster
相关产品推荐
相关产品推荐

