2011-05-02 66 views
0

我想創建一些arrys。首先我想告訴你它是什麼,以便你明白我爲什麼這樣做:PHP動態創建字母表

加密。我想用字母表創建一個數組。

$a1 = array("a"=>"b", "b"=>"c",....,"z"=>a"); 

好吧,這只是一個有點打字所以現在我想多一點經常這樣做。在這種情況下,它是x + 1 = y或者換句話說就是解碼x = y-1所以讓我們說我想要做一個位置從1到26的變化 - 我會有26個數組,而不是。

加密和解密本身並不是在PHP中的問題,而不是我所要求的,因爲它是簡單的字符串替換。但我不知道是否有這樣的可能什麼告訴以動態的方式創建:

createAlphabets(1,12)

,它創造了我與12個英文字母鍵多維數組?

這是我的問題的第二部分:

是數學上有更多的機會通過數字計算來交換字符?

我的意思是,x + 5-3 = y與x + 2 = y相同,但是我計算它是由我的26個陣列覆蓋的?所以即使我說:x-5 + 3 = y =? x-2 = y它和x + 24 = y一樣嗎?不是嗎?請不要打擾告訴我,它可能是+25或+23,我不會有24個陣列 - 它的上午8點,我沒有睡覺 - 我只是問原則 - 我不想讓你做我的工作 - 我是隻是尋找一些確認和想法。

+1

這聽起來像是你半實施[Vigenèrecipher](http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher)。 – Charles 2011-05-02 07:07:13

回答

1
$chars = range('a', 'z'); 
$shift = 5; 
$shifted = array_merge(array_slice($chars, $shift), array_slice($chars, 0, $shift)); 
$alphabet = array_combine($chars, $shifted); 

由於您的字母表中有26個字符,因此只能將它們移動26個字符,這意味着有26種可能的組合。