我正在加密列(具有主键约束) 在oracle中使用下面的查询在表中。但对于一些数据我面临着问题。我正在证明我的用例如下。
查询已使用:
select regexp_replace(max(sys_connect_by_path(cy,'-')),'-','') plaintext
from (select row_number() over (order by L) rn, cy from
(select chr(mod(ascii(substr(p,level,1)) +
ascii(substr(k,decode(mod(level,length(k)),0,length(k),
mod(level,length(k))),1))-130,26) + 65) cy
,level L
from (
select (p_in_cyphertext) p
,regexp_replace(key,' ') K
from dual
)
connect by level <= length(p)))
connect by rn = prior rn + 1
start with rn = 1;
输入1:
p_in_cyphertext ='N2N OLXQDIC FFP'
key ='A2f78C85798CFF3DFC74FE7014764C92'
输出1 :
N = S0FNOE:A:
输入2
p_in_cyphertext ='NLN OLXQDIC FFP'
key ='A2f78C85798CFF3DFC74FE7014764C92'
输出2:
N = S0FNOE:A:
这两个值都被加密到同一个东西,因此我得到了唯一约束的voilated错误。 这是因为值2和L的mod函数返回相同的输出:-4。
有人可以帮我改进这个算法。