2011-05-02 36 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种可能的组合。