暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE数据库解析关于数据加密函数

郑小雯 2023-07-26
106

数据加密函数

您可以将 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_AES 和 ENCRYPT_TDES 定义加密的数据,使 用 DECRYPT_CHAR 和 DECRYPT_BINARY 查询加密的数据。使用 GETHINT 显示密码提 示符(如果在服务器上设置了该字符串)。

可以使用这些 SQL 内置函数来实现列级别或单元级别加密。

使用列级别加密,用相同的密码为给定列上的所有值加密。

使用单元级别加密,用不同的密码为列内的数据加密。

提示: 如果想从大型表中选择加密数据,请指定未加密的列。在其中选择行,可对包含加密数 据的列创建索引或外键约束,但是这样做对资源使用的效率较低,原因是查询优化器不使用此 类索引和外键约束。


使用列级别数据加密来保护信用卡数据

下列示例使用列级别加密来保护信用卡数据。


使用列级别加密来保护信用卡数据:

1. 创建表:create table customer (id char(30), creditcard lvarchar(67)); 


 2. 插入加密数据: a. 设置会话密码:SET ENCRYPTION PASSWORD "credit card number is encrypted"; b. 加密数据。

INSERT INTO customer VALUES ("Alice", encrypt_aes("1234567890123456")); INSERT INTO customer VALUES ("Bob", encrypt_aes("2345678901234567"));


3. 使用解密函数查询加密数据。

SET ENCRYPTION PASSWORD "credit card number is encrypted"; SELECT id FROM customer WHERE DECRYPT_CHAR(creditcard) = "2345678901234567";

重要: 加密数据值比相应的未加密数据占用更多的存储空间。列宽足够存储明文的列可能需要 增大宽度才能支持列级别加密或单元级别加密。如果要将加密值插入声明宽度小于加密字符串 的列,那么列存储截断后的值,该值无法被解密。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论