O pacote GAAL contém alguns arquivos com mensagens criptografadas e uma chave para decifrá-las. Use os comandos a seguir para ler dos arquivos e atribuir às variáveis correspondentes, uma mensagem criptografada e a uma chave para decifrá-la.
>> menc=lerarq('c:/matlab/toolbox/gaal/menc1.txt')
>> key=lerarq('c:/matlab/toolbox/gaal/key.txt')
Com estes comandos foram lidos os arquivos menc1.txt e key.txt e atribuídos os resultados às variáveis menc e key respectivamente. Para converter a mensagem criptografada e a chave para matrizes numéricas use os comandos do pacote gaal:
y=char2num (menc), M=char2num (key)
Sabendo-se que a mensagem criptografada (convertida para números), y, foi originalmente obtida multiplicando-se a matriz M pela mensagem original (convertida para números), x , determine x . Descubra a mensagem usando o comando do pacote gaal, num2char(x), que converte a matriz para texto. Decifre as mensagens que estão nos arquivos menc2.txt e menc3.txt. Como deve ser a matriz M para que ela possa ser uma matriz chave na criptografia?

Passo 1

O enunciado pede para decifrar mensagens criptografadas em arquivos “menc 1.txt”, “menc 2.txt” e “menc 3.txt” usando uma matriz-chave lida em “key.txt” com o pacote GAAL. O procedimento geral é:
1. converter o texto cifrado em vetor numérico y via char\(2\)num(menc);
2. converter a chave textual em matriz numérica M via char\(2\)num(key);
3. resolver o sistema linear
y = M\,x
para encontrar x;
4. converter x de volta em texto com num\(2\)char(x).

Passo 2

Use no MATLAB/GAL:
menc = lerarq('c:/matlab/toolbox/gaal/menc\(1\).txt');  
key  = lerarq('c:/matlab/toolbox/gaal/key.txt');  
y    = char^{2}\text{num}(menc);  
M    = char^{2}\text{num}(key);  
Agora calcule o vetor x resolvendo M \cdot x = y, isto é:
x = M^{-1} \cdot y
no MATLAB, basta fazer x = M\y;.

Passo 3

Após obter o vetor numérico x, decifre-o em texto:
plain\(1=\) num\(2\)char(x);
O conteúdo de plain\(1\) será a mensagem original em “menc 1.txt”.

Passo 4

Repita o mesmo para os outros dois arquivos:
menc = lerarq('c:/matlab/toolbox/gaal/menc\(2\).txt');
y    = char^{2}\text{num}(menc);
x_{2} = M\y;
plain_{2} = num^{2}\text{char}(x_{2});
e
menc = lerarq('c:/matlab/toolbox/gaal/menc\(3\).txt');
y    = char^{2}\text{num}(menc);
x_{3} = M\y;
plain_{3} = num^{2}\text{char}(x_{3});
Assim você obtém as mensagens decifradas contidas em “menc 2.txt” e “menc 3.txt”.

Passo 5

Para que M possa funcionar como matriz-chave na criptografia de Hill (ou similar), ela deve ser invertível no domínio em que se trabalha. Em particular:
1. M deve ser quadrada;
2. \det(M)\neq0;
3. se o ciframento for feito módulo algum inteiro m (por ex. m=26 no alfabeto), deve-se ter \gcd\bigl(\det(M),m\bigr)=1.

Resposta

A matriz-chave M deve ser quadrada e invertível (i.e., \det(M) \neq 0); em esquemas modulares, adicionalmente \gcd(\det(M), \text{mod}) = 1.

Exercícios relacionados