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

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

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

  1. 创建表:create table customer (id char(30), creditcard lvarchar(67));
  2. 插入加密数据:
    1. 设置会话密码:SET ENCRYPTION PASSWORD "credit card number is encrypted";
    2. 加密数据。
          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";
重要: 加密数据值比相应的未加密数据占用更多的存储空间。列宽足够存储明文的列可能需要增大宽度才能支持列级别加密或单元级别加密。如果要将加密值插入声明宽度小于加密字符串的列,那么列存储截断后的值,该值无法被解密。

有关加密安全性的更多信息,请参阅 GBase 8s 管理员指南

有关内置加密和解密函数语法和存储要求的更多信息,请参阅 GBase 8s SQL 指南:语法