数据加密函数

您可以将 SET ENCRYPTION PASSWORD 语句与内置 SQL 加密函数(使用 Advanced Encryption Standard (AES)和 Triple DES (3DES)加密)一起使用来保护您的敏感数据。如果使用加密,只有拥有正确密码的用户才能读取、复制或修改数据。

将SET ENCRYPTION PASSWORD 语句与下列内置加密和解密函数一起使用 :
  • ENCRYPT_AES
    ENCRYPT_AES(data-string-expression
              [, password-string-expression [, hint-string-expression ]])
  • ENCRYPT_TDES
    ENCRYPT_TDES (data-string-expression
                [, password-string-expression [, hint-string-expression ]])
  • DECRYPT_CHAR
    DECRYPT_CHAR(EncryptedData [, PasswordOrPhrase])
  • DECRYPT_BINARY
    DECRYPT_BINARY(EncryptedData [, PasswordOrPhrase])
  • GETHINT
    GETHINT(EncryptedData)

如果您使用了 SET ENCRYPTION PASSWORD 语句来指定缺省密码,那么数据库服务器将该密码应用于同一会话中调用的对加密和解密函数的后续调用中。

使用 ENCRYPT_AESENCRYPT_TDES 定义加密的数据,使用 DECRYPT_CHARDECRYPT_BINARY 查询加密的数据。使用 GETHINT 显示密码提示符(如果在服务器上设置了该字符串)。

可以使用这些 SQL 内置函数来实现列级别或单元级别加密。
  • 使用列级别加密,用相同的密码为给定列上的所有值加密。
  • 使用单元级别加密,用不同的密码为列内的数据加密。
提示: 如果想从大型表中选择加密数据,请指定未加密的列。在其中选择行,可对包含加密数据的列创建索引或外键约束,但是这样做对资源使用的效率较低,原因是查询优化器不使用此类索引和外键约束。