实现数据列的加解密 应用示例 1.连接数据库。 具体步骤参见《数据仓库服务用户操作指南》中的“连接集群>使用gsql命令行客户端连接集群”章节。 2.创建表student,有id,name和score三个属性。使用哈希函数加密保存name,使用对称密码算法保存score。 CREATE TABLE student (id int, name text, score text, subject text); INSERT INTO student VALUES (1, gshash('alice', 'sha256'), gsencrypt('95', '12345', 'aes128', 'cbc', 'sha256'),gsencryptaes128('math', '1234')); INSERT INTO student VALUES (2, gshash('bob', 'sha256'), gsencrypt('92', '12345', 'aes128', 'cbc', 'sha256'),gsencryptaes128('english', '1234')); INSERT INTO student VALUES (3, gshash('peter', 'sha256'), gsencrypt('98', '12345', 'aes128', 'cbc', 'sha256'),gsencryptaes128('science', '1234')); 3.不使用密钥查询表student,通过查询结果可知:没有密钥的用户即使拥有了select权限也无法看到name和score这两列加密数据。 select from student; id name score subject +++ 1 2bd806c97f0e00af1a1fc3328fa763a9269723c8db8fac4f93af71db186d6e90 AAAAAAAAAABAuUC3VQ+MvPCDAaTUySl1e2gGLr4/ATdCUjTEvova3cb/Ba3ZKqIn1yNVGEFBvJnTq/3sLF4//Gm8qG7AyfNbbqdW3aYErLVpbE/QWFX9Ig aFEWQR2gkj iu6sfsAad+dHzfFDHePZ6xd44zyekh+qVFlh9FODZ0DoaFAJXctwUsiqaiitTxW8cCSEaNjS/E7Ke1ruY 2 81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9 AAAAAAAAAABAuUC3VQ+MvPCDAaTUySl1taXxAoDqE793hgyCJvC0ESdAX5Mtgdq2LXI1f5ZxraQ73WIJVtIBX8oe3gTDxoXGlHbHht4kzM4U8dOwr5rjgg aFEWQR2gkj iu6sfsAad+dM8tPTDo/Pds6ZmqdmjGiKxf39+Wzx5NoQ6c8FrzihnRzgc0fycWSu5YGWNOKYWhRsE84Ac 3 026ad9b14a7453b7488daa0c6acbc258b1506f52c441c7c465474c1a564394ff AAAAAAAAAACnyusORPeApqMUgh56ucQu3uso/Llw5MbPFMkOXuspEzhhnc9vErwOFe6cuGtx8muEyHCX7V5yXs+8FxhNh3n5L3419LDWJJLY2O4merHpSg zomphRfHV4 H32hTtgkio1PyrobVO8N+hN7kAKwtygKP2E7Aaf1vsjmtLHcL88jyeJNe1lxe0fAvodzPJAxAuV3UJN4M (3 rows) 4.使用密钥查询表student,通过查询结果可知:拥有密钥的用户通过使用gsencrypt对应的解密函数gsdecrypt解密后,可以查看加密数据。 select id, gsdecrypt(score, '12345', 'aes128', 'cbc', 'sha256'),gsdecryptaes128(subject, '1234') from student; id gsdecrypt gsdecryptaes128 ++ 1 95 math 2 92 english 3 98 science (3 rows)