
# 使用函数进行加密
数据加密作为有效防止未授权访问和防护数据泄露的技术，在各种信息系统中广泛使用。作为信息系统的核心，DWS数仓也提供数据加密功能，包括透明加密和使用SQL函数加密。
DWS主要提供了哈希函数和对称密码算法来实现对数据列的加解密。哈希函数支持sha256，sha384，sha512和国密sm3。对称密码算法支持aes128，aes192，aes256和国密sm4。
- 哈希函数
  - md5(string) 将string使用MD5加密，并以16进制数作为返回值。MD5的安全性较低，不建议使用。
    
  
  - gs_hash(hashstr, hashmethod) 以hashmethod算法对hashstr字符串进行信息摘要，返回信息摘要字符串。支持的hashmethod：sha256, sha384, sha512, sm3。
    
   
- 对称密码算法
  - gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod) 采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法，以keystr为密钥对encryptstr字符串进行加密，返回加密后的字符串。
    
  
  - gs_decrypt(decryptstr, keystr, cryptotype, cryptomode, hashmethod) 采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法，以keystr为密钥对decryptstr字符串进行解密，返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。
    
  
  - gs_encrypt_aes128(encryptstr,keystr) 以keystr为密钥对encryptstr字符串进行加密，返回加密后的字符串。keystr的长度范围为1\~16字节。
    
  
  - gs_decrypt_aes128(decryptstr,keystr) 以keystr为密钥对decryptstr字符串进行解密，返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。
    
   
了解更多请参见[实现数据列的加解密](https://support.huaweicloud.com/bestpractice-dws/dws_05_0092.html)。
