Muitas técnicas para codificar e decodificar mensagens secretas fazem uso de álgebra linear. Aqui será descrito um método bastante simples que envolve apenas um par de matrizes inversas, A e B=A^{-1}, cujos elementos são todos inteiros. Considere o par de matrizes a seguir:
para o qual você pode verificar imediatamente que A B=B A=1. O remetente vai usar uma matriz A para codificar a mensagem, e o destinatário vai usar a matriz B para decodificar a mensagem. O objetivo deste método é que a mensagem seja codificada utilizando pares de caracteres, de modo que tabelas de freqüência de letras e coisas do tipo não ajudem em nada a um decodificador não-amigável: aqui descrevemos um código em vez de um criptograma.
Dada uma mensagem para ser codificada, o primeiro passo é convertê-la da forma alfabética para a forma numérica. Para isso usamos a seguinte correspondência (MAP) entre letras e números:
\begin{array}{cccccccccccccccccccccccccccc} \text { A } & \text { B } & \text { C } & \text { D } & \text { E } & \text { F } & \text { G } & \text { H } & \text { I } & \text { J } & \text { K } & \text { L } & \text { M } & \text { N } & \text { O } & \text { P } & \text { Q } & \text { R } & \text { S } & \text { T } & \text { U } & \text { V } & \text { W } & \text { X } & \text { Y } & \text { Z } & . & , \\\\ 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 & 27 & 28 \\\\ 29 \end{array}
Qualquer outra numeração dos 29 símbolos tipográficos também seria possível, mas o remetente e o destinatário teriam que combinar uma específica. Para maior clareza usamos o símbolo #, indicando um espaço entre as palavras (ou em outros lugares). Suponha que THE GAME IS A FOOT, que, em português seria algo como “O PLANO ESTÁ EM AÇÃO”, é a mensagem a ser codificada e transmitida. Para convertê-la para forma numérica, usamos o pareamento exibido acima:
Como a mensagem tem um número ímpar de elementos, completamos o fim da segunda linha com 29, que representa um espaço final inofensivo ( um “zero” ) somado à mensagem. Para codificação da mensagem, multiplicamos a matriz M à esquerda pela matriz codificada A :
Veja que, enquanto haviam repetições representando letras repetidas na mensagem original, não há nenhuma na mensagem codificada, de modo que os decifradores de código simples não têm por onde começar.
Quando esta mensagem codificada chega, o destinatário utiliza a matriz decodificadora B para reverter os passos acima, sabendo que
B N=B A M=I M=M(2)
Portanto, se o decodificador usar a mensagem codificada para construir uma matriz com duas linhas e depois multiplicar esta matriz à esquerda por B , ele ou ela irá obter a matriz M do remetente. Esta multiplicação é B M=\left[\begin{array}{cc}1 & -1 \\\\ -2 & 3\end{array}\right]\left[\begin{array}{lllllllll}69 & 43 & 44 & 88 & 27 & 18 & 54 & 35 & 116 \\\\ 49 & 35 & 39 & 59 & 20 & 17 & 41 & 30 & 87\end{array}\right] B M=\left[\begin{array}{ccccccccc}20 & 8 & 5 & 29 & 7 & 1 & 13 & 5 & 29 \\\\ 9 & 19 & 29 & 1 & 6 & 15 & 15 & 20 & 29\end{array}\right]
Note que o produto é de fato a matriz M do remetente. O passo final de decodificação é o vetor \mathbf{m} \_decod:
A Equação (2) demonstra todo o funcionamento do processo. Em resumo, o remetente multiplica a mensagem original (na forma matricial numérica M ) por A para obter a mensagem codificada. O destinatário multiplica a mensagem codificada ( em forma matricial N ) por B para reconstruir a mensagem original. Como A e B são matrizes inversas, a multiplicação do destinatário por B desfaz o efeito da multiplicação do remetente por A.
Passo 1
O enunciado fornece os seguintes dados (vou listar exatamente o que foi dado e o que precisamos obter):
Explicação didática: cada letra vira um número fixo pela tabela; o símbolo \# representa espaços entre palavras e foi associado a 29. Como a lista tem 17 números (ímpar), teremos de completar para formar pares (duas linhas).]
Passo 3
Arranjar os números em pares formando a matriz M com duas linhas (cada coluna é um par de símbolos, primeiro elemento da coluna = primeira linha, segundo = segunda linha). Como a quantidade de elementos é ímpar, acrescentamos um 29 ao final da segunda linha para completar:
Comentário didático: faz-se isso porque A é 2\times2, então multiplicando A por M (de tamanho 2\times n) obtemos uma matriz N também 2\times n que contém os pares codificados.]
Passo 4
Explicar como multiplicar A por M. Para uma matriz 2\times 2
No nosso caso a=3, b=1, c=2, d=1. Ou seja, para cada coluna de M com elementos \left[\begin{array}{c}m_1\\[2pt]m_2\end{array}\right], a coluna correspondente em N é
Observação didática: a concatenação sem separadores cria uma sequência ambígua se alguém não souber que os pares têm sido formados em colunas; o receptor precisa conhecer que os números vêm em pares (ou precisar do tamanho dos blocos) para reconstruir a matriz N.]
Passo 6
Agora a decodificação: o destinatário conhece B=A^{-1}, então multiplica B pela matriz N para recuperar M: