2017-03-04 32 views
1

我想在MySQL中创建一个加密。 可以说有一串字符。在MySQL中创建加密

“我可以跑多少”。

我想用第四个字母替换每个字母。 例如,

'a' replaced with 'e' 
'b' replaced with 'f' 
and so on. 

上面的最终输出看起来像这样。 “M gen vyr jsr ew qerc”

我能想出的最好的是以下。 由于它是一个嵌套函数,它不会给我正确的结果。 下面的函数用'e'替换'a',然后再用'i'替换'e' ,直到它结束。

select messagetext, 
replace(replace(replace(replace(replace(replace(replace(replace 
(replace(replace(replace(replace(replace(replace(replace 
(replace(replace(replace(replace(replace(replace(replace 
(replace(replace(replace(replace(messagetext,'a','e'), 
'b','f'),'c','g'),'d','h'),'e','i'),'f','j'),'g','k'), 
'h','l'),'i','m'),'j','n'),'k','o'),'l','p'),'m','q'), 
'n','r'),'o','s'),'p','t'),'q','u'),'r','v'),'s','w'), 
't','x'),'u','y'),'v','z'),'w','a'),'x','b'),'y','c'), 
'z','d') 
from chat; 

任何帮助将不胜感激。

+0

这不是一个很好的加密,它是一个简单的凯撒密码,可以立即破解。 – Psi

+0

https://en.wikipedia.org/wiki/Caesar_cipher – Sangharsh

+0

我同意,我需要它来完成一个项目工作。我无法弄清楚在Mysql中如何做 –

回答

0

达到部分解决方案,现在卡住了。

把它放在这里,让别人可以在此工作。

查询

SELECT UNHEX(HEX(val) + REPEAT('04', LENGTH(val))) AS rot4 FROM caeser; 

+--------+ 
| rot4 | 
+--------+ 
| efghip | 
| aq?? | <-- Need to rotate/mod hex value for this. (Stuck here) 
+--------+ 

表创建查询:

CREATE TABLE caeser (val VARCHAR(255)); 
INSERT INTO caeser ('abcdef'); 
INSERT INTO caeser VALUES ('uvwxyz'); 

PS:将转换为社区维基,如果其他人也做出贡献。

+0

使用'REPLACE'替换'z'之外的值。 – Sangharsh