在BigQuery中,我将md5函数用作:
select md5('<<some string>>') as hashed
总是在字母的末尾返回“ ==“,例如:
R7zlx09Yn0hn29V+nKn4CA==
为什么总是总是带有'=='?
答案 0 :(得分:4)
您需要使用TO_HEX来获取所需的表示形式,因为md5返回BYTES
,并且您需要字符串:
TO_HEX:将BYTES序列转换为十六进制STRING。 将STRING中的每个字节转换为两个十六进制字符 范围(0..9,a..f)。
select TO_HEX(md5('123456')) as hashed
返回:
e10adc3949ba59abbe56e057f20f883e
答案 1 :(得分:1)
=
是由于base64's padding引起的。尽管如此,根据the documentation,输出应为字节,但输出为base64字符串。您可以通过以下查询进行检查:
SELECT MD5("Hello World") AS MD5,TO_HEX(MD5("Hello World")) AS BYTES,TO_BASE64(FROM_HEX(TO_HEX(MD5("Hello World")))) as BASE64
具有以下输出:
Row |MD5 |BYTES |BASE64
1 |sQqNsWTgdUEFt6mb5y4/5Q== |b10a8db164e0754105b7a99be72e3fe5 |sQqNsWTgdUEFt6mb5y4/5Q=