From e80f2733081795927e2f3415b8d26756170af5b6 Mon Sep 17 00:00:00 2001
From: Marcela Ribeiro de Oliveira <mro15@inf.ufpr.br>
Date: Wed, 9 May 2018 16:24:04 -0300
Subject: [PATCH] programa para criar o texto cifrado

---
 .gitignore   |  1 +
 Makefile     | 17 +++++++++++------
 cypher.cpp   | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 key.txt      |  1 +
 playfair.cpp |  4 ++--
 5 files changed, 66 insertions(+), 8 deletions(-)
 create mode 100644 cypher.cpp
 create mode 100644 key.txt

diff --git a/.gitignore b/.gitignore
index 4d90da4..7219596 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 *.swo
 playunfair
 *.out
+cypher
diff --git a/Makefile b/Makefile
index 35b6ece..2dfe385 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 0000000..e4eb5e0
--- /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 0000000..fbcdd3e
--- /dev/null
+++ b/key.txt
@@ -0,0 +1 @@
+cachorro
diff --git a/playfair.cpp b/playfair.cpp
index 35bd620..57cd9d6 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() ){
 
-- 
GitLab