数据仓库服务 GaussDB(DWS)-使用函数加解密

时间:2023-11-01 16:15:35

使用函数加解密

GaussDB (DWS)支持使用以下函数对字符串进行加解密。

  • gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod)

    描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。支持的cryptotype:aes128, aes192, aes256, sm4。支持的cryptomode:cbc。支持的hashmethod:sha256, sha384, sha512, sm3。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。keystr的长度范围与加密算法相关,为1~KeyLen字节。当cryptotype为aes128和sm4时,KeyLen为16,aes192时KeyLen为24,aes256时KeyLen为32。

    返回值类型:text

    返回值长度:至少为 4*[(maclen + 56)/3] 字节,不超过 4*[(Len + maclen + 56)/3] 字节,其中Len为加密前数据长度(单位为字节),maclen为HMAC值的长度,当hashmethod为sha256和sm3时maclen为32,sha384时maclen为48,sha512时maclen为64。即当hashmethod为sha256和sm3时,返回值长度至少为120字节,不超过4*[(Len + 88)/3] 字节;当hashmethod为sha384时,返回值长度至少为140字节,不超过4*[(Len + 104)/3] 字节;当hashmethod为sha512时,返回值长度至少为160字节,不超过4*[(Len + 120)/3] 字节;

    示例:

    12345
    SELECT gs_encrypt('GaussDB(DWS)', '1234', 'aes128', 'cbc',  'sha256');                                                        gs_encrypt                                                        -------------------------------------------------------------------------------------------------------------------------- AAAAAAAAAACcFjDc CS bop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA==(1 row)
    • 该函数8.1.1及以上集群版本支持。
    • 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
    • 在同一张数据表中,加密函数ge_encrypt与gs_encrypt_aes128不要混合使用。
  • gs_decrypt(decryptstr, keystr,cryptotype, cryptomode, hashmethod)

    描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。

    返回值类型:text

    示例:

    12345
    SELECT gs_decrypt('AAAAAAAAAACcFjDcCSbop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA==', '1234', 'aes128', 'cbc', 'sha256');  gs_decrypt  -------------- GaussDB(DWS)(1 row)
    • 该函数8.1.1及以上集群版本支持。
    • 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
    • 此函数需要结合gs_encrypt加密函数共同使用,且加密算法和HMAC算法要保证一致。
  • gs_encrypt_aes128(encryptstr,keystr)

    描述:以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为1~16字节。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。

    返回值类型:text

    返回值长度:至少为92字节,不超过 4*[(Len+68)/3] 字节,其中Len为加密前数据长度(单位为字节)。

    示例:

    123456
    SELECT gs_encrypt_aes128('MPPDB','1234');                               gs_encrypt_aes128-------------------------------------------------------------------------------------gwditQLQG8NhFw4OuoKhhQJoXojhFlYkjeG0aYdSCtLCnIUgkNwvYI04KbuhmcGZp8jWizBdR1vU9CspjuzI0lbz12A=(1 row)
    • 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
    • 在同一张数据表中,加密函数gs_encrypt_aes128与ge_encrypt不要混合使用。
  • gs_decrypt_aes128(decryptstr,keystr)

    描述:以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。

    返回值类型:text

    示例:

    12345
    SELECT gs_decrypt_aes128('gwditQLQG8NhFw4OuoKhhQJoXojhFlYkjeG0aYdSCtLCnIUgkNwvYI04KbuhmcGZp8jWizBdR1vU9CspjuzI0lbz12A=','1234'); gs_decrypt_aes128 ------------------- MPPDB(1 row)
    • 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
    • 此函数需要结合gs_encrypt_aes128加密函数共同使用。
  • gs_hash(hashstr, hashmethod)

    描述:以hashmethod算法对hashstr字符串进行信息摘要,返回信息摘要字符串。支持的hashmethod:sha256, sha384, sha512, sm3。该函数8.1.1及以上集群版本支持。

    返回值类型:text

    返回值长度:sha256和sm3返回64字节,sha384返回96字节,sha512返回128字节。

    示例:

    12345
    SELECT gs_hash('GaussDB(DWS)', 'sha256');                                             gs_hash                                              -------------------------------------------------------------------------------------------------- e59069daa6541ae20af7c747662702c731b26b8abd7a788f4d15611aa0db608efdbb5587ba90789a983f85dd51766609(1 row)
  • md5(string)

    描述:将string使用MD5加密,并以16进制数作为返回值。

    MD5的安全性较低,不建议使用。

    返回值类型:text

    示例:

    12345
    SELECT md5('ABC');               md5                ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932(1 row)
support.huaweicloud.com/devg-811-dws/dws_04_0995.html