vigenere cipher使用oracle查询

时间:2018-04-23 19:17:20

标签: sql oracle plsql

我正在加密列(具有主键约束) 在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。

有人可以帮我改进这个算法。

0 个答案:

没有答案