HANA与BigQuery的SHA256哈希结果差异排查求助
解决HANA与BigQuery SHA256哈希结果不一致的问题
问题根源
HANA和BigQuery的SHA256哈希运算核心二进制结果是一致的,差异仅在于输出的编码格式:
- HANA将哈希二进制结果转为大写十六进制字符串
- BigQuery默认将哈希二进制结果转为Base64字符串
解决方案
统一两边的输出编码格式即可,以下两种方式任选其一:
方式1:让BigQuery输出十六进制(匹配HANA格式)
修改BigQuery的SQL,用TO_HEX将SHA256返回的二进制结果转为十六进制,再用UPPER统一为大写:
SELECT UPPER(TO_HEX(SHA256(CAST('Hello World' AS STRING)))) AS HASH_STRING;
执行后输出:A591A6D40BF420404A011733CFB7B190D62C65BF0BCDA32B57B277D9AD9F146E,与HANA结果完全匹配。
方式2:让HANA输出Base64(匹配BigQuery原格式)
修改HANA的SQL,用TO_BASE64将哈希二进制结果转为Base64字符串:
SELECT TO_BASE64(HASH_SHA256(TO_BINARY('Hello World'))) AS HASH_STRING FROM DUMMY;
执行后输出:pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4,与BigQuery原结果完全匹配。
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

