下列示例使用列级别加密来保护信用卡数据。
使用列级别加密来保护信用卡数据:
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. 使用解密函数查询加密数据。
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 112 -
SET ENCRYPTION PASSWORD "credit card number is encrypted";
SELECT id FROM customer
WHERE DECRYPT_CHAR(creditcard) = "2345678901234567";
重要: 加密数据值比相应的未加密数据占用更多的存储空间。列宽足够存储明文的列可能需要
增大宽度才能支持列级别加密或单元级别加密。如果要将加密值插入声明宽度小于加密字符串
的列,那么列存储截断后的值,该值无法被解密。
有关加密安全性的更多信息,请参阅《GBase 8s 管理员指南》。
有关内置加密和解密函数语法和存储要求的更多信息,
请参阅
《GBase 8s SQL 指南:
语法》
。