本文介紹二進位函數的基本文法及樣本。
Log Service支援如下二進位函數。
-
在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status或"status"表示日誌欄位status。
-
varbinary類型是二進位字元類型,varchar類型是可變長度字元類型。
|
函數名稱 |
文法 |
說明 |
支援SQL |
支援SPL |
|
from_base64(x) |
將BASE64編碼的字串解碼為二進位類型的資料。 |
√ |
√ |
|
|
from_base64url(x) |
使用URL安全字元將BASE64編碼的字串解碼為二進位類型的資料。 |
√ |
× |
|
|
from_big_endian_64(x) |
將大端模式的二進位類型的資料轉化成數字。 |
√ |
× |
|
|
from_hex(x) |
將十六進位類型的資料轉化成二進位類型的資料。 |
√ |
√ |
|
|
length(x) |
計算二進位類型的資料的長度。 |
√ |
× |
|
|
md5(x) |
對二進位類型的資料進行MD5編碼。 |
√ |
√ |
|
|
to_base64(x) |
對二進位類型的資料進行BASE64編碼。 |
√ |
√ |
|
|
to_base64url(x) |
使用URL安全字元將二進位類型的資料進行BASE64編碼。 |
√ |
× |
|
|
to_hex(x) |
將二進位類型的資料轉化成十六進位類型的資料。 |
√ |
√ |
|
|
to_big_endian_64(x) |
將數字轉化為大端模式的二進位類型的資料。 |
√ |
× |
|
|
sha1(x) |
對二進位類型的資料進行SHA1加密。 |
√ |
√ |
|
|
sha256(x) |
對二進位類型的資料進行SHA256加密。 |
√ |
√ |
|
|
sha512(x) |
對二進位類型的資料進行SHA512加密。 |
√ |
√ |
|
|
xxhash64(x) |
對二進位類型的資料進行xxHash64加密。 |
√ |
√ |
|
|
aes_encrypt(data, key, iv, mode, pad_style) |
對二進位類型的資料進行 AES 加密。 |
√ |
√ |
|
|
aes_decrypt(data, key, iv, mode, pad_style) |
對二進位類型的資料進行 AES 解密。 |
√ |
√ |
from_base64函數
from_base64函數用於將BASE64編碼的字串解碼為二進位類型的資料。
文法
from_base64(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
varbinary類型存在不可見字元,返回結果仍以BASE64編碼格式展示。
-
如果傳回值是二進位類型的不可見字元,則您可以使用to_hex函數將其轉換為十六進位類型的資料。
-
如果傳回值是二進位類型的可見字元,則您可以使用from_utf8函數將其轉換為UTF-8字串。
樣本
將BASE64編碼的字串解碼為二進位類型的資料後,再轉換為十六進位類型的資料。
-
查詢和分析語句
* | SELECT to_hex(from_base64('c2xz')) -
查詢和分析結果:查詢返回結果 _col0 列的值為
736C73。
from_base64url函數
from_base64url函數使用URL安全字元將BASE64編碼的字串解碼為二進位類型的資料。
文法
from_base64url(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
varbinary類型存在不可見字元,返回結果仍以BASE64編碼格式展示。
-
如果傳回值是二進位類型的不可見字元,則您可以使用to_hex函數將其轉換為十六進位類型的資料。
-
如果傳回值是二進位類型的可見字元,則您可以使用from_utf8函數將其轉換為UTF-8字串。
樣本
使用URL安全字元將BASE64編碼的字串解碼為二進位類型的資料。
-
查詢和分析語句
* | SELECT to_hex(from_base64url('c2xz')) -
查詢和分析結果:查詢返回結果 _col0 列的值為
736C73。
from_big_endian_64函數
from_big_endian_64函數用於將大端模式的二進位類型的資料轉化成數字。
文法
from_big_endian_64(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
bigint類型。
樣本
將大端模式的二進位類型的資料(10)轉化成數字。
-
查詢和分析語句
* | SELECT from_big_endian_64(to_big_endian_64(10)) -
查詢和分析結果為
10。
from_hex函數
from_hex函數將十六進位類型的資料轉化成二進位類型的資料。
文法
from_hex(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為varbinary類型。 |
傳回值類型
varbinary類型。
樣本
將十六進位類型的資料(D74D)轉換為二進位類型的資料。
-
查詢和分析語句
* | SELECT from_hex('D74D') -
查詢和分析結果:
_col0列的值為100=。
length函數
length函數用於計算二進位類型的資料的長度。
文法
length(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
bigint類型。
樣本
計算region欄位值的長度。
-
查詢和分析語句
* | SELECT length('00101000') -
查詢和分析結果傳回值為
8,即字串00101000的長度。
md5函數
md5函數用於對二進位類型的資料進行MD5編碼。
文法
md5(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為varbinary類型。 |
傳回值類型
varbinary類型。
樣本
對二進位類型的資料(1101)進行MD5編碼。
-
查詢和分析語句
* | SELECT MD5(from_base64('1101')) AS md5 -
查詢和分析結果:md5的值為
rG3lOanun9N57opubMnPDw==。
to_base64函數
to_base64函數用於對二進位類型的資料進行BASE64編碼。
文法
to_base64(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varchar類型。
樣本
對二進位類型的資料(10)進行BASE64編碼。
-
查詢和分析語句
* | SELECT to_base64(from_base64('10')) AS base64 -
查詢和分析結果:base64列的值為
1w==。
to_base64url函數
to_base64url函數使用URL安全字元對二進位類型的資料進行BASE64編碼。
文法
to_base64url(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varchar類型。
樣本
使用URL安全字元對二進位類型的資料(100)進行BASE64編碼。
-
查詢和分析語句
* | SELECT to_base64url(from_base64('100')) -
查詢和分析結果

to_hex函數
to_hex函數用於將二進位類型的資料轉化成十六進位類型的資料。
文法
to_hex(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varchar類型。
樣本
將二進位類型的資料(100)轉化成十六進位類型的資料。
-
查詢和分析語句
* | SELECT to_hex(from_base64('100')) -
查詢和分析結果:
_col0列的值為D74D。
to_big_endian_64函數
to_big_endian_64函數用於將數字轉化為大端模式的二進位類型的資料。
文法
to_big_endian_64(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為bigint類型。 |
傳回值類型
varbinary類型。
樣本
將數字0轉換為大端模式的二進位類型的資料。
-
查詢和分析語句
* | SELECT to_big_endian_64(0) -
查詢和分析結果

sha1函數
sha1函數用於對二進位類型的資料進行SHA1加密。
文法
sha1(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
樣本
對二進位類型的資料(1101)進行SHA1加密。
-
查詢和分析語句
* | SELECT sha1(from_base64('1101')) AS sha1 -
查詢和分析結果

sha256函數
sha256函數用於對二進位類型的資料進行SHA256加密。
文法
sha256(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
樣本
對二進位類型的資料(1101)進行SHA256加密。
-
查詢和分析語句
* | SELECT sha256(from_base64('1101')) AS sha256 -
查詢和分析結果

sha512函數
sha512函數用於對二進位類型的資料進行SHA512加密。
文法
sha512(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
樣本
對二進位類型的資料(1101)進行SHA512加密。
-
查詢和分析語句
* | SELECT sha512(from_base64('1101')) AS sha512 -
查詢和分析結果

xxhash64函數
xxhash64函數用於對二進位類型的資料進行xxHash64加密。
文法
xxhash64(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為binary類型。 |
傳回值類型
varbinary類型。
樣本
對二進位類型的資料(10)進行xxhash64加密。
-
查詢和分析語句
* | SELECT xxhash64(from_base64('10')) -
查詢和分析結果

aes_encrypt函數
aes_encrypt函數用於對資料進行 AES 加密。進階加密標準 AES(Advanced Encryption Standard)為最常見的對稱式加密演算法,支援 CBC、ECB、OFB、CFB、CTR 多種加密模式,以及多種填充方式。
文法
aes_encrypt(data, key, iv, mode, pad_style)
參數說明
|
參數名稱 |
參數類型 |
是否必填 |
說明 |
|
data |
Binary |
是 |
需要被加密的明文資料。支援非常量值。 |
|
key |
Binary |
是 |
加密資料使用的密鑰。 |
|
iv |
Binary |
是 |
加密使用位移量。 |
|
mode |
String |
否 |
AES 加密模式。預設值為 CBC。可取值包括:CBC(預設值):Cipher Block Chaining、ECB:Electronic Code Book、OFB:Output FeedBack、CFB:Cipher FeedBack、CTR:Counter。 |
|
pad_style |
String |
否 |
填充模式。僅對塊模式(CBC、ECB)生效,流模式(OFB、CFB、CTR)不依賴填充。預設為 pkcs7。可取值包括:pkcs7(預設值):PKCS#7 填充、iso7816:ISO 7816 填充、x923:ANSI X.923 填充。 |
傳回值類型
Binary 類型的加密結果。
樣本
樣本 1:使用預設 CBC 模式加密
-
原始日誌
{"test":"aliyuntest"} -
加工規則
* | extend result=to_base64(aes_encrypt(cast(test as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary))) -
加工結果
{"result": "gXIqu0cBBtZHQxJBK8GLeA==", "test": "aliyuntest"}
樣本 2:使用 ECB 模式加密
-
原始日誌
{"test":"aliyuntest"} -
加工規則
* | extend result=to_base64(aes_encrypt(cast(test as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary),'ECB')) -
加工結果
{"result": "xh6A2VwoVuojfuA0CHuLBQ==", "test": "aliyuntest"}
樣本 3:使用 OFB 流模式加密
-
原始日誌
{"test":"aliyuntest"} -
加工規則
* | extend result=to_base64(aes_encrypt(cast(test as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary),'OFB')) -
加工結果
{"result": "lBQuflXuEE2/bQ==", "test": "aliyuntest"}
aes_decrypt函數
aes_decrypt函數用於對已加密資料進行 AES 解密。
文法
aes_decrypt(data, key, iv, mode, pad_style)
參數說明
|
參數名稱 |
參數類型 |
是否必填 |
說明 |
|
data |
Binary |
是 |
需要被解密的密文資料。 |
|
key |
Binary |
是 |
解密資料使用的密鑰。 |
|
iv |
Binary |
是 |
解密使用位移量。 |
|
mode |
String |
否 |
AES 解密模式。預設值為 CBC。可取值包括:CBC(預設值):Cipher Block Chaining、ECB:Electronic Code Book、OFB:Output FeedBack、CFB:Cipher FeedBack、CTR:Counter。 |
|
pad_style |
String |
否 |
填充模式。僅對塊模式(CBC、ECB)生效,流模式(OFB、CFB、CTR)不依賴填充。預設為 pkcs7。可取值包括:pkcs7(預設值):PKCS#7 填充、iso7816:ISO 7816 填充、x923:ANSI X.923 填充。 |
傳回值類型
Binary 類型的解密結果(明文位元組),按 UTF-8 編碼展示為文本。
樣本
樣本 1:解密 CBC 模式加密的資料(Base64 輸入)
-
原始日誌
{"test":"gXIqu0cBBtZHQxJBK8GLeA=="} -
加工規則
* | extend result=aes_decrypt(cast(from_base64(test) as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary)) -
加工結果
{"test": "gXIqu0cBBtZHQxJBK8GLeA==", "result": "aliyuntest"}
樣本 2:解密 OFB 流模式加密的資料
-
原始日誌
{"test": "lBQuflXuEE2/bQ=="} -
加工規則
* | extend result=cast(aes_decrypt(cast(from_base64(test) as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary), 'OFB') as varchar) -
加工結果
{"test": "lBQuflXuEE2/bQ==", "result": "aliyuntest"}
樣本 3:解密 ECB 模式加密的資料
-
原始日誌
{"test": "xh6A2VwoVuojfuA0CHuLBQ=="} -
加工規則
* | extend result=cast(aes_decrypt(cast(from_base64(test) as binary), cast('qwertyuiopasdfgd' as binary), cast('xxywosjdapdiawdk' as binary), 'ECB') as varchar) -
加工結果
{"test": "xh6A2VwoVuojfuA0CHuLBQ==", "result": "aliyuntest"}