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),
, 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?
>> menc=lerarq('c:/matlab/toolbox/gaal/menc1.txt')
>> key=lerarq('c:/matlab/toolbox/gaal/key.txt')
y=char2num (menc), M=char2num (key)
Sabendo-se que a mensagem criptografada (convertida para números),, 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
.txt”, “menc
.txt” e “menc
.txt” usando uma matriz-chave lida em “key.txt” com o pacote GAAL. O procedimento geral é:
. converter o texto cifrado em vetor numérico
via
. converter a chave textual em matriz numérica
via
. resolver o sistema linear
char\(2\)num(menc)
;char\(2\)num(key)
;para encontrar
;
. converter
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
resolvendo
, isto é:
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 .txt”.
plain\(1\)
será a mensagem original em “menc
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
.txt” e “menc
.txt”.
Passo 5
Para que
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:
.
deve ser quadrada;
.
;
. se o ciframento for feito módulo algum inteiro
(por ex.
no alfabeto), deve-se ter
.
Resposta
A matriz-chave
deve ser quadrada e invertível (i.e.,
); em esquemas modulares, adicionalmente
.