口令和提示规范

SET ENCRYPTION 语句或加密函数可为当前会话定义口令和提示。必须将 password 指定为返回至少 6 字节,但不多于 128 的字符表达式。指定可选的 hint 作为返回不多于 32 字节的字符表达式。

hint 的目的是帮助用户记忆 password。当您以 hint 参数调用 ENCRYPT_AESENCRYPT_TDES 时,在 encrypted_data 中加密并嵌入它,GETHINT 可从中检索它。但如果您定义 hint 为 NULL,或当 SET ENCRYPTION 没有为 session password 指定了缺省的 hint 时,省略 hint,则在 encrypted_data 中不嵌入 hint

用于加密和解密的 password 或是该函数的 password 参数,或如果您省略此参数,则它是在您调用该函数之前在最后执行的 SET ENCRYPTION 语句中指定的 session password

如果 encrypted_data 参数不是加密的格式,或如果当 SET ENCRYPTION 未设置 session password 时,省略解密函数的 password 参数,则 DECRYPT_CHARDECRYPT_BINARYGETHINT 函数调用失败并报错。如果用于解密的 password 与用于加密的 password 不相同,则也导致错误。

对数据库的安全操作十分关键的加密密钥管理完全地委托给应用。这种实现意味着在数据库中不存储 password 本身。通过应用没有来自用户的帮助,数据库服务器不可对加密的数据进行解密。

如果您从 UDR 调用任何这些函数,您可能更倾向于在 SET ENCRYPTION 语句中设置 session password。否则,可查看系统目录中 sysprocbody.data 列的用户会看到 password