diff --git a/.gitignore b/.gitignore index 4d90da4e5050c8556186f981186d08439ed83fec..72195967286deafd34b13ce10f094288a077efe6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ *.swo playunfair *.out +cypher diff --git a/Makefile b/Makefile index 35b6ece2bce2948645cfd67785724fc278704f56..2dfe385ce50a2b410d6dd713d70cd458eb510ec9 100644 --- a/Makefile +++ b/Makefile @@ -5,18 +5,23 @@ INCL = -I ./include DEPS = include/* -OBJ = playfair.o playunfair.o +OBJ = playfair.o -EXEC = playunfair +EXEC = playunfair cypher -$(EXEC): $(OBJ) - $(CC) $(CFLAGS) -o $@ $^ +all: $(EXEC) + +playunfair: $(OBJ) + $(CC) $(CFLAGS) -o $@ $^ $@.o + +cypher: $(OBJ) + $(CC) $(CFLAGS) -o $@ $^ $@.o %.o: %.cpp $(DEPS) $(CC) $(CFLAGS) -c -o $@ $< $(INCL) -all: $(EXEC) clean: - rm -f $(OBJ) playunfair + rm -f $(OBJ) $(EXEC) + diff --git a/cypher.cpp b/cypher.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e4eb5e0b4906fe6d476a04cdcfa660d5f0aba182 --- /dev/null +++ b/cypher.cpp @@ -0,0 +1,51 @@ +#include "include/playunfair.h" +#include <fstream> + + +int main(int argc, char *argv[]){ + if(argc!=3){ + std::cout << "Uso: ./playunfair <file-in> <key>" << std::endl; + return 0; + } + std::fstream input, keyF; + char *inputName, *keyName; + std::string aux="", key, crip; + std::ostringstream text, keys; + + inputName = argv[1]; + keyName = argv[2]; + + input.open(inputName, std::ifstream::in); + if(!input.good()){ + std::cout << "Nao foi possivel abrir o arquivo de entrada" << std::endl; + return 0; + } + + while(std::getline(input, aux)) + text << aux; + + //TODO: tirar caracteres especiais + crip = text.str(); + parser(crip); + //std::cout << crip << std::endl; + + keyF.open(keyName, std::ifstream::in); + if(!keyF.good()){ + std::cout << "Nao foi possivel abrir o dicionario" << std::endl; + return 0; + } + + //TODO: if filter returns accepted print key and text in file + std::getline(keyF, aux); + keys << aux; + key = keys.str(); + crip = playfair(crip, key, CRYPT); + std::cout << crip << std::endl; + return 0; +} + +void parser(std::string &text){ + text.erase(std::remove(text.begin(), text.end(), ' '), text.end()); + std::transform(text.begin(), text.end(), text.begin(), ::tolower); +} + diff --git a/key.txt b/key.txt new file mode 100644 index 0000000000000000000000000000000000000000..fbcdd3e37b9c05f65ae70085ea9703b48492ae2c --- /dev/null +++ b/key.txt @@ -0,0 +1 @@ +cachorro diff --git a/playfair.cpp b/playfair.cpp index 35bd6202a38ee70f6064f3ebbeebc00ccebb4b13..57cd9d637cc9c3c6c92b0100ae9cc1d324531f9e 100644 --- a/playfair.cpp +++ b/playfair.cpp @@ -32,12 +32,12 @@ std::string playfair(std::string text, const std::string key, int crypt){ crypt=crypt+5;//Avoid operator % on negative numbers std::ostringstream ret; std::vector< char > mKey(createKM(key)); - for (int i=0; i<5; ++i){ + /*for (int i=0; i<5; ++i){ for (int j=0; j<5; ++j){ std::cout << mKey[i*5 + j] << ' '; } std::cout << std::endl; - } + }*/ unsigned int indexT = 0; while(indexT <text.size() ){