PHP динамическое создание алфавита

Я хотел бы создать несколько массивов. Прежде всего, я хотел бы рассказать вам, о чем идет речь, чтобы вы поняли, почему я это делаю:

Криптография.

Я хочу создать массив с алфавитом.

такие как

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

Хорошо, это всего лишь немного напечатать, так что теперь я хочу делать это немного чаще. В данном случае это x+1=y или другими словами для расшифровки x=y-1

Итак, скажем, я хотел бы сделать это с изменением позиции с 1 на 26 - у меня было бы 26 массивов, чем.

Само шифрование и дешифрование - это не та проблема в php, и не то, о чем я прошу, поскольку это простая замена строки. Но мне было интересно, можно ли создать что-то подобное динамически, сказав:

создатьалфавиты(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 утра, а я не спал - я просто спрашиваю о принципе - я не хочу, чтобы вы делали мою работу - я Просто ищу подтверждение и идею.


person Richard    schedule 02.05.2011    source источник
comment
Похоже, вы наполовину реализуете шифр Виженера.   -  person Charles    schedule 02.05.2011


Ответы (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 возможных комбинаций.

person deceze♦    schedule 02.05.2011