Giter VIP home page Giter VIP logo

escaravelhodeouro's Introduction

O Escaravelho de Ouro

Esse software foi desenvolvido como parte de avaliação para a disciplina de Criptografia para Segurança de Dados, a fim de obter o grau de Bacharel em Sistemas de Informação pela Universidade Federal de Santa Maria - UFSM. Inspirado na história The Golden Bug de Edgar Allan Poe, o intuíto era de desenvolver uma programa que fizesse análise criptográfica (verificação de plaintext com análise de frequência de caracteres e busca de palavras conhecidas) e criptografia (encriptação e decriptação) usando o algoritmo de substituição monoalfabética.

Funções e Modo de uso

Funções

As seguintes funções estão disponíveis no programa:

  • Cifragem de mensagem;
  • Decifragem de mensagem;
  • Verificação de plaintext, procurando por palavras conhecidas;
  • Análise de frequência, dando a frequência de caracteres em textos.

Modo de uso

O programa é rodado em um painel de linha de comando.

Todos os arquivos de entrada devem ter a extensão .txt, assim como todos os arquivos gerados serão do tipo .txt. Em todos os casos, apenas o nome do arquivo (sem extensão) deve ser especificado. Diretórios podem ser indicados usando /.

Cifragem e decifragem

Para a cifragem e decifragem, é necessário ter uma tabela de substituição definida, que deve ser um arquivo .txt com o seguinte formato:

  • Na primeira linha, os caracteres usados na língua não cifrada, separados por um pipe |;
  • Na segunda linha, os caracteres usados para a encrptação/substituição também separados por um pipe |;
  • Exemplo: exemplo_tabela_substituiçao.txt.

No texto, cada caractere original da primeira linha da tabela será trocado pelo seu respectivo da linha abaixo. Será gerado um novo arquivo .txt com a saída resultado da encriptação.

Verificação de plaintext

A verificação de plaintext recebe uma tabela de substituição igual ao da cifragem e decifragem (exemplo_tabela_substituiçao.txt) e realiza a decifragem produzindo um arquivo de saída (com nome a ser definido por você). Após, você deve especificar um arquivo que contenha o conjunto de palavras que gostaria de procurar no plaintext recém decifrado. Cada palavra nesse arquivo deve estar disposto em uma linha.

O programa irá procurar as palavras e apresentar na tela quais delas foram encontradas.

Tabela de frequência

A verificação de tabela de frequência recebe uma tabela de frequência em que em cada linha:

  • Um caractere por linha;
  • Depois do caractere, o número de vezes que apareceu;
  • Depois o valor da frequência daquele caractere com separação decimal usando uma vírgula;
  • Todos separados por um pipe |.

Um exemplo da tabela pode ser visualizado em exemplo_tabela_frequencia.txt.

Caso a tabela exista, os valores anteriores dos caracteres e número de vezes que apareceu são mantidos e acrescidos. Caso o arquivo não exista, ele é criado nesse mesmo formato. O resultado pode ser visualizado no arquivo criado.

Compilação

O programa pode ser compilado usando o CMake, para isso baixar o arquivo CMakeLists.txt e o arquivo main.c. Ao compilar será gerado em executável chamado "escaravelho".

Caso não queira usar o CMake, pode usar apenas o GCC, para isso baixar apenas o arquivo main.c, executar especificando um nome de saída. Se o nome não for especificado, é gerado um executável "a.out".

escaravelhodeouro's People

Contributors

ddvargas avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.