Шифр Полибия (Реализация на Java)

Java   8 Июнь 2012  Автор статьи:  

В данной статье я покажу один способ шифрования на основе квадрата Полибия. Он будет основан на том, что каждому символу из квадрата Полибия будут соответствовать два числа: номер строки и номер столбца. Так как можно предположить, что скорей всего эти номера будут не превосходить 256, то будем использовать массив байт для хранения зашифрованного сообщения. Ключом в нашем случае уже готовый квадрат Полибия. Для корректности работы алгоритма в ключе должны быть перечислены все символы, которые есть в тексте, который мы хотим зашифровать.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Polibiy {
    public byte[] encrypt(String text, char[][] matr) {
        byte[] ans = new byte[text.length() * 2];
        for (int c = 0; c < text.length(); c++) {
           //поиск совпадения
            for (int i = 0; i < matr.length; i++) {
                for (int j = 0; j < matr[i].length; j++) {
                    if (matr[i][j] == text.charAt(c)) {
                        ans[c * 2] = (byte) i;
                        ans[c * 2 + 1] = (byte) j;
                    }
                }
            }

        }
        return ans;
    }
    public String decrypt(byte[] text, char [][] matr){
        StringBuilder s = new StringBuilder();
        for(int i = 0; i < text.length / 2; i++)
        {
            s.append(matr[text[i*2]][text[i*2+1]]);//восстановления символа
        }
        return s.toString();
    }
}

Научиться программировать

  • на Delphi

  • на Java

  • на C++