如果只想加密数据库中的某些列,可以使用 ENCRYPT 函数来实现。ENCRYPT 函数对传递给它的值进行加密时所用的算法即用于数据库加密的 AES 高度加密算法。
ENCRYPT 函数的密钥区分大小写,即使是在不区分大小写的数据库中也是如此。与大多数口令一样,最好选择无法被轻易猜到的密钥值。建议选择满足以下条件的密钥值:长度至少为 16 个字符,混合使用大小写并包含数字、字母和特殊字符。每次要对数据进行解密时,都必须指定此密钥。
对于高度加密的数据库,请务必将密钥的副本保存在安全的位置。如果丢失了加密密钥,就没有办法访问数据,即使有技术支持人员协助也不行。此时必须放弃该数据库并创建一个新的数据库。
加密的值可以使用 DECRYPT 函数进行解密。必须使用 ENCRYPT 函数中指定的那个密钥。这两个函数都会返回 LONG BINARY 值。如果需要其它数据类型的值,可以使用 CAST 函数将值转换为所需的数据类型。下例介绍如何使用 CAST 函数将解密的值转换为所需的数据类型。请参见CAST 函数 [Data type conversion]。
如果数据库用户需要访问解密形式的数据,但您不想让他们访问加密密钥,则可以创建一个使用 DECRYPT 函数的视图。这样用户就可以在不知道加密密钥的情况下访问解密数据。创建使用该表的视图或存储过程时,可以使用 ALTER VIEW 和 ALTER PROCEDURE 语句的 SET HIDDEN 参数来确保用户无法通过查看视图或过程定义访问加密密钥。请参见ALTER PROCEDURE 语句和ALTER VIEW 语句。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |