2017-03-04 37 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