Skip to content

CryptoMatrix 1.0

Choose a tag to compare

@LuizWT LuizWT released this 16 Apr 01:58
· 20 commits to main since this release
1286e8f

CryptoMatrix

Sistema de Criptografia por Matriz com Chave Compartilhada

1. Visão Geral

Esse código implementa um sistema simples de criptografia e decriptação baseado na geração de uma matriz quadrada embaralhada contendo as letras do alfabeto (com acréscimo da letra "Ç"). A matriz é gerada de forma determinística a partir de uma chave compartilhada, permitindo que tanto a parte que criptografa quanto a parte que descriptografa possam reproduzir exatamente a mesma configuração.

Cada caractere da mensagem é representado pela posição (linha e coluna) em que ocorre na matriz. Quando um caractere se repete, uma posição diferente é escolhida para criptografia. Para os espaços, o sistema utiliza tokens especiais: cada token é formado por um prefixo aleatório (qualquer letra de A-Z, exceto Ç) seguido por dois dígitos aleatórios, facilitando sua identificação durante a decriptação.

2. Dependências e Considerações

  • Módulos Utilizados:
    • random: Para gerar números aleatórios e embaralhar a lista de caracteres.
    • string: Para acessar a constante ascii_uppercase, que fornece as letras maiúsculas de A-Z.
  • Uso da Chave: A chave fornecida pelo usuário é usada para definir a semente do gerador de números aleatórios (random.seed(key)), garantindo que a matriz gerada seja a mesma para uma mesma chave em processos distintos.
  • Aplicações Reais:
    • Comunicação segura entre partes que compartilham uma chave secreta.
    • Criação de puzzles ou desafios de criptografia.
    • Implementações educacionais para introdução aos conceitos de substituição de caracteres e criptografia simétrica com matriz.

3. Explicação Detalhada do Código

3.1 Função generate_matrix



Objetivo e Funcionamento:

  • Entrada: key (chave para definir o estado do gerador aleatório) e size (tamanho da matriz, padrão 7).
  • Processamento:
    1. Cria uma lista contendo as letras de A-Z e a letra "Ç".
    2. Define a semente do gerador aleatório com a chave para garantir um embaralhamento determinístico.
    3. Duplica os elementos da lista se necessário para preencher a matriz.
    4. Embaralha a lista.
    5. Divide a lista embaralhada em sublistas de tamanho size.
  • Saída: Retorna a matriz gerada (lista de listas representando as linhas da matriz).

3.2 Função print_matrix



Objetivo e Funcionamento:

  • Entrada: matrix (a matriz gerada).
  • Processamento: Percorre cada linha da matriz e imprime o número da linha e os caracteres, separados por espaços.
  • Saída: Exibição da matriz no console de forma organizada.

3.3 Função encrypt



Objetivo e Funcionamento:

  • Entrada: message (mensagem a ser criptografada) e matrix.
  • Processamento:
    1. Inicializa a string encrypted.
    2. Constrói positions_full mapeando cada caractere da matriz para suas posições (linha, coluna).
    3. Cria positions_pool como uma cópia de positions_full para gerenciar as posições usadas.
    4. Para cada caractere da mensagem (em maiúsculas):
      • Se for espaço, gera um token com um prefixo aleatório (A-Z) e dois dígitos aleatórios (entre 11 e 77).
      • Para outros caracteres, seleciona e remove uma posição aleatória da pool; se esgotada, reinicializa a pool.
  • Saída: Mensagem criptografada, composta por tokens representando as posições ou espaços.

3.4 Função decrypt



Objetivo e Funcionamento:

  • Entrada: encrypted_text: texto criptografado; matrix: matriz utilizada na criptografia.
  • Processamento:
    • Verifica, token por token, se representa um espaço (token de 3 caracteres) ou um caractere da matriz (token de 2 dígitos).
    • Converte os tokens de 2 dígitos em índices para recuperar o caractere correspondente da matriz.
  • Saída: Retorna a mensagem original descriptografada.

3.5 Função main



Objetivo e Funcionamento:

  • Solicita a chave e gera a matriz determinística.
  • Exibe a matriz e solicita a mensagem a ser criptografada.
  • Criptografa a mensagem e exibe o resultado.
  • Descriptografa a mensagem e exibe a mensagem original.
  • O bloco if __name__ == "__main__": garante que a função main seja executada apenas quando o script for chamado diretamente.

4. Possíveis Aplicações em Cenários Reais

  • Comunicação Segura: Permite o envio de mensagens criptografadas entre partes que compartilham uma chave secreta.
  • Desafios e Puzzles: Pode ser adaptado para criar enigmas ou desafios onde os jogadores precisam descobrir a chave para interpretar uma mensagem oculta.
  • Ensino: Ideal para uso didático, introduzindo conceitos de criptografia por substituição e uso de chaves compartilhadas.

5. Observações Finais

  • A utilização de tokens especiais para espaços, com prefixos aleatórios (de A-Z), torna a mensagem criptografada menos previsível.
  • A reinicialização da pool de posições garante que mensagens com muitas repetições de um mesmo caractere possam ser criptografadas sem perder a diversidade de posições.

Instalação

Important

Requer Python 3.6 ou superior para garantir compatibilidade total com os recursos utilizados no código
Clone o repositório:

git clone https://github.com/LuizWT/CryptoMatrix.git

Acesse o diretório:

cd CryptoMatrix/

Execute a ferramenta:

python3 cryptoMatrix.py

Apoio ao Projeto

Se você quiser contribuir com o projeto, sinta-se à vontade para abrir Issues ou fazer Pull Requests.


Este projeto está licenciado sob a GNU Affero General Public License v3.0 (Modificada)