LightDB之保序加密

保序加密是一种特殊的加密算法,保序加密后,密文包含明文的大小信息,所以可以用密文做有限的运算,如排序,查找。
保序加密的定义如下:
有两个输入a, b 和保序加密函数f;
如果a > b 则 f(a) > f(b) ;
如果a = b 则 f(a) = f(b).
LightDB新增extension--lt_ope来支持保序加密,extension默认开启(本特性将于6月底版本发布)
lt_ope 支持三种数据类型的保序加密:bigint、double precision和text. 该text类型支持的最大明文长度为 128 字节。三种明文加密的密文类型为ope_type。

SELECT ope_bigint_encrypt(12345678);
      ope_bigint_encrypt
--------------------------------
 f6g7h8\x03\x01\x02\x02Cceh\x0C

SELECT ope_double_encrypt(1234.5678);
      ope_double_encrypt
-----------------------------
 f6g7h8\x02\x01\x02\x02Ccekڙ
 
 SELECT ope_text_encrypt('123456789@qq.com');
       ope_text_encrypt
 -------------------------------
  e5d4c3b2\x01\x02\x02Cceh\x01à

密文类型 ope_type 支持以下运算符:>、>=、 <、<=和。同时,文本类型明文加密的ope_type类型密文支持操作。 =!=like 'xxx%'
密文类型 ope_type 也支持order by, between...and, IN,NOT IN和BTREE index.

create table test_ope(id int, info text, opedata ope_type, crt_time timestamp not null);
  CREATE TABLE

create index opedata_index on test_ope USING BTREE (opedata);
  CREATE INDEX

posted @ 2022-06-11 09:59  起司24  阅读(437)  评论(0编辑  收藏  举报