SparkSQL Encoding, Encryption, and Decryption​ Functions

  • Last update: August 22, 2023
  • 1. 概述

    「编码函数」、「加密函数」、「签名函数」等常用于进行API加密认证取数时的 Token 生成。

    本文主要介绍 FineDataLink 中 SparkSQL 算子支持的编码函数、环境变量等等。

    文档示例详情参见:

    2. base64编码和解码函数

    1)base64(expr):转换 expr 为 base 64 字符串。

    1686041391114946.png

    2)unbase64(expr):以二进制形式返回已解码的 base64 字符串。

    1686041360262403.png

    3. 环境变量

    注1:相关函数默认大写。

    注2:如需要引入字符串,字符串不区分单双引号:。

    名称FDL的SparkSQL算子内用法SparkSQL是否有内置函数SparkSQL的内置函数用法示例
    随机字符串

    UUID()

    示例:SELECT UUID()

    SELECT uuid()

    注:不支持改变长度

    时间戳(Timestamp)

    UNIX_TIMESTAMP()

    示例:SELECT UNIX_TIMESTAMP()

    SELECT unix_timestamp()

    示例:

    例如,用户需要使用「沃丰接口」取数,接口鉴权方式需要使用 unix time,nonce 为请求的唯一标识,值是由调用者提供的任意字符串,15分钟内此字符串只能被使用一次;在这里我们使用 SQL 的 uuid 函数生成。因此需要使用上述两个环境变量。

    直接将 SparkSQL 作为输入源,输入 SQL 语句:

    SELECT	UNIX_TIMESTAMP(now()) AS time_str,	UUID() AS uuid_str;

    即可使用环境变量,取出两个指定的值,如下图所示:

    4. 编码函数

    注1:相关函数默认大写。

    注2:如需要引入字符串,字符串不区分单双引号:。

    名称FDL的SparkSQL算子内用法
    Base16Encode

    BASE16(expr)

    示例:SELECT BASE16('FineDataLink')

    Base64Encode

    BASE64(expr)

    示例:SELECT BASE64('FineDataLink')

    URLEncode

    URLENCODE(expr)

    示例:SELECT URLENCODE('FineDataLink')

    5. 加密函数

    注1:相关函数默认大写。

    注2:如需要引入字符串,字符串不区分单双引号:。

    名称FDL的SparkSQL算子内用法
    MD5

    MD5(expr)

    示例:SELECT MD5('FineDataLink')

    SHA

    SHA(expr)

    示例:SELECT SHA('FineDataLink')

    SHA1

    SHA1(expr)

    示例:SELECT SHA1('FineDataLink')

    SHA2

    SHA2(expr, bitLength)

    注:bitLength为SHA2的位数,支持SHA-224、SHA-256、SHA-384和 SHA-512,默认为SHA256。

    示例:SELECT SHA2('FineDataLink',256)

    RSA

    RSA(expr,secretKey,keyFormat)

    注:secretKey为输入的密钥、格式为base64编码,keyFormat为密钥格式、值为'PKCS1'和'PKCS8'(不区分格式的大小写),本函数返回值格式也为base64编码

    示例:SELECT RSA( 'FineDataLink' , 'MIIBCgKCAQEAnLdoA3ba57YHBAenYbLGTcdC48VVvVVDXV6N/W+1FztBRjvNPV1D
    MOcIJBrveTlgKug2PCVynaIttaNql6p/+Bm4G41kyZYy7RSaUCaJ3ryjcXsKfClt
    nG9vCwbIN+bVchxRzj739zIA1tBHn9v22PhFcEfsSAy2G2EwM4bQ38n2UrMse9wb
    LUGT0kzyquwPQs7vriU+1XBkrdssoAqbwgW5yUqxDosYB5h7D1YTW0qKkJ6PPNnL
    XbMv2Meyjxq1sbWoF/m8uboaKklqal1ep5UqTp9OFNOaTrVyXY4Gkt7wq3OoNvk9
    2cJ1fHz9wnriGo+oNut9gQr1WVjOzRkAwwIDAQAB' , 'PKCS1')

    示例:

    本文第六节中获取了timestamp、nonce 两个值,签名 sign 为 email 、open_api_token、timestamp、nonce、sign_version 共同组合生成 sign=SHA256(email&open_api_token&timestamp&nonce&sign_version),使用了加密函数。

    紧接着本文第六节的算子,新增 SparkSQL 并输入

    SELECT SHA2(CONCAT("email&open_api_token",time_str,"&",uuid_str,"&v2") ,256) as sign_str,time_str,uuid_str from SparkSQL

    6. 签名函数

    注1:相关函数默认大写。

    注2:如需要引入字符串,字符串不区分单双引号:。

    名称FDL的SparkSQL算子内用法
    HMAC-MD5

    HMACMD5(expr,secretKey,format)

    其中,secretKey为输入的秘钥,format格式值可选为'HEX'或'BASE64'(不区分格式的大小写)

    示例:SELECT HMACMD5( 'FineDataLink' , 'Im a secret key' , 'HEX')


    HMAC-SHA1

    HMACSHA1(expr,secretKey,format)

    其中,secretKey为输入的秘钥,format格式值可选为'HEX'或'BASE64'(不区分格式的大小写)

    示例:SELECT HMACSHA1( 'FineDataLink' , 'Im a secret key' , 'HEX')


    HMAC-SHA256

    HMACSHA256(expr,secretKey,format)

    其中,secretKey为输入的秘钥,format格式值可选为'HEX'或'BASE64'(不区分格式的大小写)

    示例:SELECT HMACSHA256( 'FineDataLink' , 'Im a secret key' , 'HEX')




    附件列表


    主题: 数据开发
    Previous
    Next
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy