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:
A=\left[\begin{array}{ll} 3 & 1 \\\\ 2 & 1 \end{array}\right] \quad \text { e } \quad B=\left[\begin{array}{cc} 1 & -1 \\\\ -2 & 3 \end{array}\right]
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:
\begin{array}{ccccccccccccccccc} \mathrm{T} & \mathrm{H} & \mathrm{E} & \# & \mathrm{G} & \mathrm{~A} & \mathrm{M} & \mathrm{E} & \# & \mathrm{I} & \mathrm{~S} & \# & \mathrm{~A} & \mathrm{~F} & \mathrm{O} & \mathrm{O} & \mathrm{~T} \\\\ 20 & 8 & 5 & 29 & 7 & 1 & 13 & 5 & 29 & 9 & 19 & 29 & 1 & 6 & 15 & 15 & 20 \end{array}
Uma vez que a matriz codificadora A é uma matriz 2 \times 2, arranjamos nossa seqüência de números como os elementos de uma matriz com duas linhas:
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]
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 :
N=A M
N=\left[\begin{array}{ll}3 & 1 \\\\ 2 & 1\end{array}\right]\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]
tal que
N=\left[\begin{array}{ccccccccc}69 & 43 & 44 & 88 & 27 & 18 & 54 & 35 & 116 \\\\ 49 & 35 & 39 & 59 & 20 & 17 & 41 & 35 & 87\end{array}\right]
Os elementos de N=A M constituem a mensagem codificada m_cod:
6943448827185435116493539592017413087
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:
20852971135299192911615152029
THE\#GAME\#IS\#AFOOT\#
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):
  • Matrizes inversas
A=\left[\begin{array}{cc}3 & 1\\[4pt]2 & 1\end{array}\right],\qquad B=\left[\begin{array}{cc}1 & -1\\[4pt]-2 & 3\end{array}\right],
com B=A^{-1} (ou seja, BA=AB=I).
  • A tabela MAP que associa símbolos a números: A → 1, B → 2, …, Z → 26, \# (espaço) → 29, . \to 27, \, \to 28.
  • Mensagem alfabética a ser codificada: THE GAME IS A FOOT.
    O que o exercício pede (objetivos):
  1. Converter a mensagem para números usando a MAP.
  2. Organizar os números em uma matriz de duas linhas M (pares de caracteres por coluna), completando com 29 se necessário.
  3. Codificar multiplicando N=A M e apresentar a mensagem codificada (numérica).
  4. Mostrar a decodificação multiplicando B N e recuperar M, depois converter de volta para letras e comprovar que aparece a mensagem original.]

Passo 2

Converter cada caractere da mensagem para números com a MAP (peguei estes números da tabela dada):
  • Mensagem: THE\ #\ GAME\ #\ IS\ #\ A\ F O O T
    Agora mapeando cada símbolo para seu número:
\begin{array}{ccccccccccccccccc} \mathrm{T} & \mathrm{H} & \mathrm{E} & \# & \mathrm{G} & \mathrm{A} & \mathrm{M} & \mathrm{E} & \# & \mathrm{I} & \mathrm{S} & \# & \mathrm{A} & \mathrm{F} & \mathrm{O} & \mathrm{O} & \mathrm{T}\\[4pt] 20 & 8 & 5 & 29 & 7 & 1 & 13 & 5 & 29 & 9 & 19 & 29 & 1 & 6 & 15 & 15 & 20 \end{array}
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:
M=\left[\begin{array}{ccccccccc} 20 & 8 & 5 & 29 & 7 & 1 & 13 & 5 & 29\\[4pt] 9 & 19 & 29 & 1 & 6 & 15 & 15 & 20 & 29 \end{array}\right].
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
A=\left[\begin{array}{cc}a & b\\[4pt]c & d\end{array}\right]
e uma coluna de M qualquer \left[\begin{array}{c}x\\[2pt]y\end{array}\right], o produto coluna correspondente em N=AM é
\left[\begin{array}{c}ax+by\\[4pt]cx+dy\end{array}\right].
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 é
\left[\begin{array}{c}3m_1 + 1m_2\\[4pt]2m_1 + 1m_2\end{array}\right].
Agora calculamos coluna a coluna (vou mostrar a conta para cada coluna para você poder reproduzir na prova sem pular etapas):
Coluna 1: m_1=20,\\ m_2=9.
3\cdot20+1\cdot9 = 60+9=69,\qquad 2\cdot20+1\cdot9=40+9=49.
Coluna 2: m_1=8,\\ m_2=19.
3\cdot8+1\cdot19=24+19=43,\qquad 2\cdot8+1\cdot19=16+19=35.
Coluna 3: m_1=5,\\ m_2=29.
3\cdot5+1\cdot29=15+29=44,\qquad 2\cdot5+1\cdot29=10+29=39.
Coluna 4: m_1=29,\\ m_2=1.
3\cdot29+1\cdot1=87+1=88,\qquad 2\cdot29+1\cdot1=58+1=59.
Coluna 5: m_1=7,\\ m_2=6.
3\cdot7+1\cdot6=21+6=27,\qquad 2\cdot7+1\cdot6=14+6=20.
Coluna 6: m_1=1,\\ m_2=15.
3\cdot1+1\cdot15=3+15=18,\qquad 2\cdot1+1\cdot15=2+15=17.
Coluna 7: m_1=13,\\ m_2=15.
3\cdot13+1\cdot15=39+15=54,\qquad 2\cdot13+1\cdot15=26+15=41.
Coluna 8: m_1=5,\\ m_2=20.
3\cdot5+1\cdot20=15+20=35,\qquad 2\cdot5+1\cdot20=10+20=30.
Coluna 9: m_1=29,\\ m_2=29.
3\cdot29+1\cdot29=87+29=116,\qquad 2\cdot29+1\cdot29=58+29=87.]

Passo 5

Reunindo todas as colunas calculadas, obtemos a matriz codificada N=AM:
N=\left[\begin{array}{ccccccccc} 69 & 43 & 44 & 88 & 27 & 18 & 54 & 35 & 116\\[4pt] 49 & 35 & 39 & 59 & 20 & 17 & 41 & 30 & 87 \end{array}\right].
Forma legível da mensagem codificada: cada coluna corresponde a um par codificado. Podemos listar os pares coluna a coluna:
(69,49),\\ (43,35),\\ (44,39),\\ (88,59),\\ (27,20),\\ (18,17),\\ (54,41),\\ (35,30),\\ (116,87).
Se quisermos formar uma única sequência numérica concatenando cada par (sem separadores), obtemos:
\text{sequência codificada} = 6949433544398859272018175441353011687.ê
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:
B=\left[\begin{array}{cc}1 & -1\\[4pt]-2 & 3\end{array}\right].
Explicação da operação: para cada coluna de N com entradas \left[\begin{array}{c}n_1\\[2pt]n_2\end{array}\right], o produto B vezes essa coluna é
\left[\begin{array}{c}1\cdot n_1 -1\cdot n_2\\[4pt]-2\cdot n_1 +3\cdot n_2\end{array}\right].
Vamos verificar coluna a coluna que recuperamos os originais (faço a conta completa para a primeira e repito para todas, assim você aprende o padrão).
Coluna 1 de N: \left[\begin{array}{c}69\\[2pt]49\end{array}\right].
1\cdot69 -1\cdot49 = 69-49=20,\qquad -2\cdot69 +3\cdot49 = -138+147=9.
Resultado (20,9) que é exatamente a primeira coluna de M.
Coluna 2 de N: \left[\begin{array}{c}43\\[2pt]35\end{array}\right].
43-35=8,\qquad -2\cdot43+3\cdot35=-86+105=19.
Resultado (8,19) — corresponde à segunda coluna de M.
Coluna 3: \left[\begin{array}{c}44\\[2pt]39\end{array}\right].
44-39=5,\qquad -88+117=29.
Resultado (5,29).
Coluna 4: \left[\begin{array}{c}88\\[2pt]59\end{array}\right].
88-59=29,\qquad -176+177=1.
Resultado (29,1).
Coluna 5: \left[\begin{array}{c}27\\[2pt]20\end{array}\right].
27-20=7,\qquad -54+60=6.
Resultado (7,6).
Coluna 6: \left[\begin{array}{c}18\\[2pt]17\end{array}\right].
18-17=1,\qquad -36+51=15.
Resultado (1,15).
Coluna 7: \left[\begin{array}{c}54\\[2pt]41\end{array}\right].
54-41=13,\qquad -108+123=15.
Resultado (13,15).
Coluna 8: \left[\begin{array}{c}35\\[2pt]30\end{array}\right].
35-30=5,\qquad -70+90=20.
Resultado (5,20).
Coluna 9: \left[\begin{array}{c}116\\[2pt]87\end{array}\right].
116-87=29,\qquad -232+261=29.
Resultado (29,29).
Portanto B N=M e recuperamos a matriz original M.]

Passo 7

Converter a matriz M de volta para a mensagem textual usando a MAP (cada número → símbolo):
M=\left[\begin{array}{ccccccccc} 20 & 8 & 5 & 29 & 7 & 1 & 13 & 5 & 29\\[4pt] 9 & 19 & 29 & 1 & 6 & 15 & 15 & 20 & 29 \end{array}\right]
Lendo coluna a coluna e substituindo números por símbolos:
(20,9)\to \mathrm{T,I},\quad (8,19)\to \mathrm{H,S},\quad (5,29)\to \mathrm{E,\#},\\ \ldots
Fazendo todas as substituições obtemos a sequência de símbolos:
\mathrm{T}\\ \mathrm{H}\\ \mathrm{E}\\ \#\\ \mathrm{G}\\ \mathrm{A}\\ \mathrm{M}\\ \mathrm{E}\\ \#\\ \mathrm{I}\\ \mathrm{S}\\ \#\\ \mathrm{A}\\ \mathrm{F}\\ \mathrm{O}\\ \mathrm{O}\\ \mathrm{T}\\ \#.
Ou seja, a mensagem decodificada é: THE#GAME#IS#AFOOT#. (O último \# é o espaço de preenchimento que adicionamos.)]

Resposta

\,6949433544398859272018175441353011687
\text{THE\#GAME\#IS\#AFOOT\#}

Exercícios relacionados