MD5 в BigQuery - PullRequest
       6

MD5 в BigQuery

0 голосов
/ 29 января 2019

В BigQuery я использую функцию md5 как:

select md5('<<some string>>') as hashed

, которая всегда возвращает «==» в последней букве, например:

R7zlx09Yn0hn29V+nKn4CA==    

Почему '== 'всегда идти с этим?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

= из-за заполнения base64 .Тем не менее и согласно документации выходные данные должны быть байтами, но вместо этого выходные данные являются строкой 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=
0 голосов
/ 29 января 2019

Вам нужно использовать TO_HEX, чтобы получить желаемое представление, так как md5 возвращает BYTES, и вам нужны строки:

TO_HEX: Преобразует последовательность байтов в шестнадцатеричную строку STRING.Преобразует каждый байт в строке в виде двух шестнадцатеричных символов в диапазоне (0..9, a..f).

select TO_HEX(md5('123456')) as hashed

возвращает:

e10adc3949ba59abbe56e057f20f883e
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...