main cryptage et decryptage séparer avec generation de json contenant les clef aes tous semble fonctionne
This commit is contained in:
parent
103fb7d640
commit
32df0c3a32
|
@ -2,12 +2,12 @@
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CMakeRunConfigurationManager" shouldGenerate="true" assignedExecutableTargets="true" buildAllGenerated="true">
|
<component name="CMakeRunConfigurationManager" shouldGenerate="true" assignedExecutableTargets="true" buildAllGenerated="true">
|
||||||
<generated>
|
<generated>
|
||||||
<config projectName="TP6-7" targetName="clean-all" />
|
|
||||||
<config projectName="aes" targetName="aes" />
|
|
||||||
<config projectName="aes" targetName="crypto.ex" />
|
|
||||||
<config projectName="aes" targetName="clean-all" />
|
|
||||||
<config projectName="aes" targetName="crypto" />
|
<config projectName="aes" targetName="crypto" />
|
||||||
|
<config projectName="aes" targetName="aes" />
|
||||||
|
<config projectName="aes" targetName="clean-all" />
|
||||||
<config projectName="aes" targetName="main" />
|
<config projectName="aes" targetName="main" />
|
||||||
|
<config projectName="aes" targetName="crypto.ex" />
|
||||||
|
<config projectName="TP6-7" targetName="clean-all" />
|
||||||
<config projectName="TP6-7" targetName="ArrayGenerique" />
|
<config projectName="TP6-7" targetName="ArrayGenerique" />
|
||||||
<config projectName="TP6-7" targetName="dequeSTL" />
|
<config projectName="TP6-7" targetName="dequeSTL" />
|
||||||
</generated>
|
</generated>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="3856e2dc-6394-46af-bb28-0bc107cd1b44" name="Default" comment="">
|
<list default="true" id="3856e2dc-6394-46af-bb28-0bc107cd1b44" name="Default" comment="">
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/aes.cpp" afterPath="$PROJECT_DIR$/aes.cpp" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/makefile" afterPath="$PROJECT_DIR$/makefile" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/makefile" afterPath="$PROJECT_DIR$/makefile" />
|
||||||
</list>
|
</list>
|
||||||
<ignored path="aes.iws" />
|
<ignored path="aes.iws" />
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<favorites_list name="aes" />
|
<favorites_list name="aes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf>
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file leaf-file-name="CMakeLists.txt" pinned="false" current-in-tab="false">
|
<file leaf-file-name="CMakeLists.txt" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
@ -54,18 +54,8 @@
|
||||||
<file leaf-file-name="aes.cpp" pinned="false" current-in-tab="true">
|
<file leaf-file-name="aes.cpp" pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/aes.cpp">
|
<entry file="file://$PROJECT_DIR$/aes.cpp">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.25684932">
|
<state vertical-scroll-proportion="0.051369864">
|
||||||
<caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
|
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="main.cpp" pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/main.cpp">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state vertical-scroll-proportion="0.0">
|
|
||||||
<caret line="9" column="25" selection-start-line="9" selection-start-column="25" selection-end-line="9" selection-end-column="25" />
|
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -179,7 +169,7 @@
|
||||||
<property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
|
<property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
|
||||||
<property name="settings.editor.splitter.proportion" value="0.2" />
|
<property name="settings.editor.splitter.proportion" value="0.2" />
|
||||||
<property name="js-jscs-nodeInterpreter" value="/usr/bin/node" />
|
<property name="js-jscs-nodeInterpreter" value="/usr/bin/node" />
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/../mif31/ArrayGenerique/CMakeLists.txt" />
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/../mif31/mif31_interpol" />
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="Application.crypto">
|
<component name="RunManager" selected="Application.crypto">
|
||||||
<configuration default="true" type="CMakeGoogleTestRunConfigurationType" factoryName="Google Test" PASS_PARENT_ENVS="FALSE" PROJECT_NAME="aes" TARGET_NAME="aes" CONFIG_NAME="Debug" TEST_MODE="SUITE_TEST">
|
<configuration default="true" type="CMakeGoogleTestRunConfigurationType" factoryName="Google Test" PASS_PARENT_ENVS="FALSE" PROJECT_NAME="aes" TARGET_NAME="aes" CONFIG_NAME="Debug" TEST_MODE="SUITE_TEST">
|
||||||
|
@ -194,6 +184,11 @@
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
||||||
|
<node-options />
|
||||||
|
<gulpfile />
|
||||||
|
<tasks />
|
||||||
|
<arguments />
|
||||||
|
<envs />
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
||||||
|
@ -232,24 +227,24 @@
|
||||||
<frame x="10" y="22" width="1346" height="703" extended-state="0" />
|
<frame x="10" y="22" width="1346" height="703" extended-state="0" />
|
||||||
<editor active="false" />
|
<editor active="false" />
|
||||||
<layout>
|
<layout>
|
||||||
|
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1376488" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
<window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39934534" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1376488" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
|
||||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
||||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39934534" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3289689" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||||
|
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
</layout>
|
</layout>
|
||||||
</component>
|
</component>
|
||||||
<component name="Vcs.Log.UiProperties">
|
<component name="Vcs.Log.UiProperties">
|
||||||
|
@ -268,18 +263,18 @@
|
||||||
<watches-manager />
|
<watches-manager />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/file.txt">
|
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0">
|
<state vertical-scroll-proportion="0.0">
|
||||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
<caret line="4" column="42" selection-start-line="4" selection-start-column="42" selection-end-line="4" selection-end-column="42" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/makefile">
|
<entry file="file://$PROJECT_DIR$/aes.cpp">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.025684932">
|
<state vertical-scroll-proportion="0.0">
|
||||||
<caret line="1" column="58" selection-start-line="1" selection-start-column="58" selection-end-line="1" selection-end-column="58" />
|
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -292,14 +287,21 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/main.cpp">
|
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0">
|
<state vertical-scroll-proportion="0.0">
|
||||||
<caret line="9" column="25" selection-start-line="9" selection-start-column="25" selection-end-line="9" selection-end-column="25" />
|
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/makefile">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state vertical-scroll-proportion="0.025684932">
|
||||||
|
<caret line="1" column="58" selection-start-line="1" selection-start-column="58" selection-end-line="1" selection-end-column="58" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.0">
|
<state vertical-scroll-proportion="0.0">
|
||||||
|
@ -310,8 +312,16 @@
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/aes.cpp">
|
<entry file="file://$PROJECT_DIR$/aes.cpp">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state vertical-scroll-proportion="0.25684932">
|
<state vertical-scroll-proportion="0.051369864">
|
||||||
<caret line="10" column="0" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
|
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/aes.hpp">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state vertical-scroll-proportion="0.0">
|
||||||
|
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
|
70
aes.hpp
70
aes.hpp
|
@ -9,6 +9,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#include <openssl/pem.h>
|
#include <openssl/pem.h>
|
||||||
|
@ -16,6 +17,8 @@
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
|
#include "json/json.h"
|
||||||
|
|
||||||
#define FAILURE -1
|
#define FAILURE -1
|
||||||
#define SUCCESS 0
|
#define SUCCESS 0
|
||||||
|
|
||||||
|
@ -33,17 +36,24 @@ protected:
|
||||||
private:
|
private:
|
||||||
std::string filename;
|
std::string filename;
|
||||||
std::string generateNewFilename();
|
std::string generateNewFilename();
|
||||||
|
std::string getFilePath();
|
||||||
std::string extension = ".new";
|
std::string extension = ".new";
|
||||||
|
|
||||||
public:
|
public:
|
||||||
aes() {};
|
aes() {};
|
||||||
aes(std::string _filename);
|
aes(std::string _filename);
|
||||||
|
static std::string writeFile(unsigned char *file, size_t fileLength, const char* Filename);
|
||||||
std::string writeFile(unsigned char *file, size_t fileLength);
|
std::string writeFile(unsigned char *file, size_t fileLength);
|
||||||
|
static int readFile(unsigned char** file, const char* filename);
|
||||||
int readFile(unsigned char **file);
|
int readFile(unsigned char **file);
|
||||||
|
|
||||||
|
std::string exportKey(const char* filename);
|
||||||
|
std::string exportKey();
|
||||||
|
void importKey(const char* filename);
|
||||||
|
|
||||||
std::string PrintAesKey();
|
std::string PrintAesKey();
|
||||||
void setAesIV(unsigned char* _aesIV);
|
void setAesIV(const unsigned char* _aesIV);
|
||||||
void setAesKey(unsigned char* _aesKey);
|
void setAesKey(const unsigned char* _aesKey);
|
||||||
unsigned char* getAesKey();
|
unsigned char* getAesKey();
|
||||||
unsigned char* getAesIV();
|
unsigned char* getAesIV();
|
||||||
|
|
||||||
|
@ -102,10 +112,13 @@ void aes::init_all() {
|
||||||
free(aesPass);
|
free(aesPass);
|
||||||
free(aesSalt);
|
free(aesSalt);
|
||||||
}
|
}
|
||||||
|
int aes::readFile(unsigned char** file) {
|
||||||
|
return readFile(file, filename.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
// peut être déporté le buffer lut avec methode pour travaillé dessus
|
// peut être déporté le buffer lut avec methode pour travaillé dessus
|
||||||
int aes::readFile(unsigned char** file) {
|
int aes::readFile(unsigned char** file, const char* filename) {
|
||||||
FILE *fd = fopen(filename.c_str(), "rb");
|
FILE *fd = fopen(filename, "rb");
|
||||||
if(fd == NULL) {
|
if(fd == NULL) {
|
||||||
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -136,15 +149,23 @@ int aes::readFile(unsigned char** file) {
|
||||||
return fileLength;
|
return fileLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string aes::generateNewFilename() {
|
std::string aes::getFilePath() {
|
||||||
std::regex e("\\b(.*[(\\.txt)]*)\\.[^(txt)].*");
|
std::regex e("\\b(.*[(\\.txt)]*)\\.[^(txt)].*");
|
||||||
filename = std::regex_replace(filename, e,"$1");
|
filename = std::regex_replace(filename, e,"$1");
|
||||||
return filename+extension;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string aes::writeFile(unsigned char *file, size_t fileLength) {
|
std::string aes::generateNewFilename() {
|
||||||
|
return aes::getFilePath()+extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string aes::writeFile(unsigned char *file, size_t fileLength) {
|
||||||
std::string newFile = generateNewFilename();
|
std::string newFile = generateNewFilename();
|
||||||
FILE *fd = fopen(newFile.c_str(), "wb");
|
return writeFile(file, fileLength, newFile.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string aes::writeFile(unsigned char *file, size_t fileLength, const char* Filename) {
|
||||||
|
FILE *fd = fopen(Filename, "wb");
|
||||||
if(fd == NULL) {
|
if(fd == NULL) {
|
||||||
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -158,20 +179,20 @@ std::string aes::writeFile(unsigned char *file, size_t fileLength) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
return newFile;
|
return Filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
void aes::setExtension(std::string _ex) {
|
void aes::setExtension(std::string _ex) {
|
||||||
extension = _ex;
|
extension = _ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
void aes::setAesKey(unsigned char* _aesKey) {
|
void aes::setAesKey(const unsigned char* _aesKey) {
|
||||||
if(aesKey == NULL)
|
if(aesKey == NULL)
|
||||||
aesKey = (unsigned char*)malloc(AES_KEYLEN/8);
|
aesKey = (unsigned char*)malloc(AES_KEYLEN/8);
|
||||||
memcpy(aesKey , _aesKey, AES_KEYLEN/8);
|
memcpy(aesKey , _aesKey, AES_KEYLEN/8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void aes::setAesIV(unsigned char* _aesIV) {
|
void aes::setAesIV(const unsigned char* _aesIV) {
|
||||||
if(aesIV == NULL)
|
if(aesIV == NULL)
|
||||||
aesIV = (unsigned char*)malloc(AES_KEYLEN/8);
|
aesIV = (unsigned char*)malloc(AES_KEYLEN/8);
|
||||||
memcpy(aesIV , _aesIV, AES_KEYLEN/8);
|
memcpy(aesIV , _aesIV, AES_KEYLEN/8);
|
||||||
|
@ -203,6 +224,33 @@ std::string aes::PrintAesKey() {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void aes::importKey(const char* filename) {
|
||||||
|
Json::Value root;
|
||||||
|
|
||||||
|
std::ifstream keyfile(filename, std::ifstream::binary);
|
||||||
|
keyfile >> root;
|
||||||
|
|
||||||
|
setAesKey(reinterpret_cast<const unsigned char*>(root["key"].asString().c_str()));
|
||||||
|
setAesIV(reinterpret_cast<const unsigned char*>(root["IV"].asString().c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string aes::exportKey() {
|
||||||
|
return exportKey((getFilePath()+".key").c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string aes::exportKey(const char* filename) {
|
||||||
|
// export the tuples aeskey and aesIV to json file
|
||||||
|
Json::Value root;
|
||||||
|
|
||||||
|
root["key"] = std::string(reinterpret_cast<char *>(aesKey));
|
||||||
|
root["IV"] = std::string(reinterpret_cast<char *>(aesIV));
|
||||||
|
|
||||||
|
std::ofstream out(filename);
|
||||||
|
out << root;
|
||||||
|
out.close();
|
||||||
|
return std::string(filename);
|
||||||
|
}
|
||||||
|
|
||||||
void aes::clear_all() {
|
void aes::clear_all() {
|
||||||
free(aesIV);
|
free(aesIV);
|
||||||
free(aesKey);
|
free(aesKey);
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"IV" : "<22>e‡£|<7C>-}“õ:šåº¿‹@¼3†Ægñ¼\u0002Ï\u0006/Ò›U",
|
||||||
|
"key" : "|\u0006[QGµåÿu°¤aJnóf®'gØ\u0011/nÝ`\u0015ûþdd»/"
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
toto
|
|
@ -0,0 +1 @@
|
||||||
|
?aîÈ×Y|°–AöòÑï³
|
|
@ -9,12 +9,12 @@ private:
|
||||||
public:
|
public:
|
||||||
decrypt(std::string filename, unsigned char* aesKey=0, unsigned char* aesIV=0);
|
decrypt(std::string filename, unsigned char* aesKey=0, unsigned char* aesIV=0);
|
||||||
decrypt(const decrypt& a);
|
decrypt(const decrypt& a);
|
||||||
|
|
||||||
void init_all(bool initSuper=true);
|
void init_all(bool initSuper=true);
|
||||||
int aesDecrypt(unsigned char *encMsg, size_t encMsgLen, unsigned char** decMsg);
|
int aesDecrypt(unsigned char *encMsg, size_t encMsgLen, unsigned char** decMsg);
|
||||||
~decrypt();
|
~decrypt();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
decrypt::decrypt(std::string filename, unsigned char* aesKey, unsigned char* aesIV) : aes(filename) {
|
decrypt::decrypt(std::string filename, unsigned char* aesKey, unsigned char* aesIV) : aes(filename) {
|
||||||
aesDecryptCtx = (EVP_CIPHER_CTX*)malloc(sizeof(EVP_CIPHER_CTX));
|
aesDecryptCtx = (EVP_CIPHER_CTX*)malloc(sizeof(EVP_CIPHER_CTX));
|
||||||
if(aesDecryptCtx == NULL) {
|
if(aesDecryptCtx == NULL) {
|
||||||
|
|
|
@ -0,0 +1,289 @@
|
||||||
|
/// Json-cpp amalgated forward header (http://jsoncpp.sourceforge.net/).
|
||||||
|
/// It is intended to be used with #include "json/json-forwards.h"
|
||||||
|
/// This header provides forward declaration for all JsonCpp types.
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// Beginning of content of file: LICENSE
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
|
The JsonCpp library's source code, including accompanying documentation,
|
||||||
|
tests and demonstration applications, are licensed under the following
|
||||||
|
conditions...
|
||||||
|
|
||||||
|
The author (Baptiste Lepilleur) explicitly disclaims copyright in all
|
||||||
|
jurisdictions which recognize such a disclaimer. In such jurisdictions,
|
||||||
|
this software is released into the Public Domain.
|
||||||
|
|
||||||
|
In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
|
||||||
|
2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
|
||||||
|
released under the terms of the MIT License (see below).
|
||||||
|
|
||||||
|
In jurisdictions which recognize Public Domain property, the user of this
|
||||||
|
software may choose to accept it either as 1) Public Domain, 2) under the
|
||||||
|
conditions of the MIT License (see below), or 3) under the terms of dual
|
||||||
|
Public Domain/MIT License conditions described here, as they choose.
|
||||||
|
|
||||||
|
The MIT License is about as close to Public Domain as a license can get, and is
|
||||||
|
described in clear, concise terms at:
|
||||||
|
|
||||||
|
http://en.wikipedia.org/wiki/MIT_License
|
||||||
|
|
||||||
|
The full text of the MIT License follows:
|
||||||
|
|
||||||
|
========================================================================
|
||||||
|
Copyright (c) 2007-2010 Baptiste Lepilleur
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use, copy,
|
||||||
|
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||||
|
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
========================================================================
|
||||||
|
(END LICENSE TEXT)
|
||||||
|
|
||||||
|
The MIT license is compatible with both the GPL and commercial
|
||||||
|
software, affording one all of the rights of Public Domain with the
|
||||||
|
minor nuisance of being required to keep the above copyright notice
|
||||||
|
and license text in the source code. Note also that by accepting the
|
||||||
|
Public Domain "license" you can re-license your copy using whatever
|
||||||
|
license you like.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// End of content of file: LICENSE
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef JSON_FORWARD_AMALGATED_H_INCLUDED
|
||||||
|
# define JSON_FORWARD_AMALGATED_H_INCLUDED
|
||||||
|
/// If defined, indicates that the source file is amalgated
|
||||||
|
/// to prevent private header inclusion.
|
||||||
|
#define JSON_IS_AMALGAMATION
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// Beginning of content of file: include/json/config.h
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Copyright 2007-2010 Baptiste Lepilleur
|
||||||
|
// Distributed under MIT license, or public domain if desired and
|
||||||
|
// recognized in your jurisdiction.
|
||||||
|
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
|
||||||
|
|
||||||
|
#ifndef JSON_CONFIG_H_INCLUDED
|
||||||
|
#define JSON_CONFIG_H_INCLUDED
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/// If defined, indicates that json library is embedded in CppTL library.
|
||||||
|
//# define JSON_IN_CPPTL 1
|
||||||
|
|
||||||
|
/// If defined, indicates that json may leverage CppTL library
|
||||||
|
//# define JSON_USE_CPPTL 1
|
||||||
|
/// If defined, indicates that cpptl vector based map should be used instead of
|
||||||
|
/// std::map
|
||||||
|
/// as Value container.
|
||||||
|
//# define JSON_USE_CPPTL_SMALLMAP 1
|
||||||
|
|
||||||
|
// If non-zero, the library uses exceptions to report bad input instead of C
|
||||||
|
// assertion macros. The default is to use exceptions.
|
||||||
|
#ifndef JSON_USE_EXCEPTION
|
||||||
|
#define JSON_USE_EXCEPTION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/// If defined, indicates that the source file is amalgated
|
||||||
|
/// to prevent private header inclusion.
|
||||||
|
/// Remarks: it is automatically defined in the generated amalgated header.
|
||||||
|
// #define JSON_IS_AMALGAMATION
|
||||||
|
|
||||||
|
#ifdef JSON_IN_CPPTL
|
||||||
|
#include <cpptl/config.h>
|
||||||
|
#ifndef JSON_USE_CPPTL
|
||||||
|
#define JSON_USE_CPPTL 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef JSON_IN_CPPTL
|
||||||
|
#define JSON_API CPPTL_API
|
||||||
|
#elif defined(JSON_DLL_BUILD)
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define JSON_API __declspec(dllexport)
|
||||||
|
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
||||||
|
#endif // if defined(_MSC_VER)
|
||||||
|
#elif defined(JSON_DLL)
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define JSON_API __declspec(dllimport)
|
||||||
|
#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
|
||||||
|
#endif // if defined(_MSC_VER)
|
||||||
|
#endif // ifdef JSON_IN_CPPTL
|
||||||
|
#if !defined(JSON_API)
|
||||||
|
#define JSON_API
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
|
||||||
|
// integer
|
||||||
|
// Storages, and 64 bits integer support is disabled.
|
||||||
|
// #define JSON_NO_INT64 1
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) // MSVC
|
||||||
|
# if _MSC_VER <= 1200 // MSVC 6
|
||||||
|
// Microsoft Visual Studio 6 only support conversion from __int64 to double
|
||||||
|
// (no conversion from unsigned __int64).
|
||||||
|
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
||||||
|
// Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
|
||||||
|
// characters in the debug information)
|
||||||
|
// All projects I've ever seen with VS6 were using this globally (not bothering
|
||||||
|
// with pragma push/pop).
|
||||||
|
# pragma warning(disable : 4786)
|
||||||
|
# endif // MSVC 6
|
||||||
|
|
||||||
|
# if _MSC_VER >= 1500 // MSVC 2008
|
||||||
|
/// Indicates that the following function is deprecated.
|
||||||
|
# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // defined(_MSC_VER)
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_RVALUE_REFERENCES
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010
|
||||||
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
||||||
|
#endif // MSVC >= 2010
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#if __has_feature(cxx_rvalue_references)
|
||||||
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
||||||
|
#endif // has_feature
|
||||||
|
|
||||||
|
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
||||||
|
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
|
||||||
|
#define JSON_HAS_RVALUE_REFERENCES 1
|
||||||
|
#endif // GXX_EXPERIMENTAL
|
||||||
|
|
||||||
|
#endif // __clang__ || __GNUC__
|
||||||
|
|
||||||
|
#endif // not defined JSON_HAS_RVALUE_REFERENCES
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_RVALUE_REFERENCES
|
||||||
|
#define JSON_HAS_RVALUE_REFERENCES 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
|
||||||
|
# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
|
||||||
|
# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
|
||||||
|
# elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
||||||
|
# define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
|
||||||
|
# endif // GNUC version
|
||||||
|
#endif // __clang__ || __GNUC__
|
||||||
|
|
||||||
|
#if !defined(JSONCPP_DEPRECATED)
|
||||||
|
#define JSONCPP_DEPRECATED(message)
|
||||||
|
#endif // if !defined(JSONCPP_DEPRECATED)
|
||||||
|
|
||||||
|
#if __GNUC__ >= 6
|
||||||
|
# define JSON_USE_INT64_DOUBLE_CONVERSION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace Json {
|
||||||
|
typedef int Int;
|
||||||
|
typedef unsigned int UInt;
|
||||||
|
#if defined(JSON_NO_INT64)
|
||||||
|
typedef int LargestInt;
|
||||||
|
typedef unsigned int LargestUInt;
|
||||||
|
#undef JSON_HAS_INT64
|
||||||
|
#else // if defined(JSON_NO_INT64)
|
||||||
|
// For Microsoft Visual use specific types as long long is not supported
|
||||||
|
#if defined(_MSC_VER) // Microsoft Visual Studio
|
||||||
|
typedef __int64 Int64;
|
||||||
|
typedef unsigned __int64 UInt64;
|
||||||
|
#else // if defined(_MSC_VER) // Other platforms, use long long
|
||||||
|
typedef long long int Int64;
|
||||||
|
typedef unsigned long long int UInt64;
|
||||||
|
#endif // if defined(_MSC_VER)
|
||||||
|
typedef Int64 LargestInt;
|
||||||
|
typedef UInt64 LargestUInt;
|
||||||
|
#define JSON_HAS_INT64
|
||||||
|
#endif // if defined(JSON_NO_INT64)
|
||||||
|
} // end namespace Json
|
||||||
|
|
||||||
|
#endif // JSON_CONFIG_H_INCLUDED
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// End of content of file: include/json/config.h
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// Beginning of content of file: include/json/forwards.h
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Copyright 2007-2010 Baptiste Lepilleur
|
||||||
|
// Distributed under MIT license, or public domain if desired and
|
||||||
|
// recognized in your jurisdiction.
|
||||||
|
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
|
||||||
|
|
||||||
|
#ifndef JSON_FORWARDS_H_INCLUDED
|
||||||
|
#define JSON_FORWARDS_H_INCLUDED
|
||||||
|
|
||||||
|
#if !defined(JSON_IS_AMALGAMATION)
|
||||||
|
#include "config.h"
|
||||||
|
#endif // if !defined(JSON_IS_AMALGAMATION)
|
||||||
|
|
||||||
|
namespace Json {
|
||||||
|
|
||||||
|
// writer.h
|
||||||
|
class FastWriter;
|
||||||
|
class StyledWriter;
|
||||||
|
|
||||||
|
// reader.h
|
||||||
|
class Reader;
|
||||||
|
|
||||||
|
// features.h
|
||||||
|
class Features;
|
||||||
|
|
||||||
|
// value.h
|
||||||
|
typedef unsigned int ArrayIndex;
|
||||||
|
class StaticString;
|
||||||
|
class Path;
|
||||||
|
class PathArgument;
|
||||||
|
class Value;
|
||||||
|
class ValueIteratorBase;
|
||||||
|
class ValueIterator;
|
||||||
|
class ValueConstIterator;
|
||||||
|
|
||||||
|
} // namespace Json
|
||||||
|
|
||||||
|
#endif // JSON_FORWARDS_H_INCLUDED
|
||||||
|
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
// End of content of file: include/json/forwards.h
|
||||||
|
// //////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif //ifndef JSON_FORWARD_AMALGATED_H_INCLUDED
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,44 @@
|
||||||
|
#include "aes.hpp"
|
||||||
|
#include "crypt.hpp"
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
if(argc != 2) {
|
||||||
|
std::cerr << "No file argument supplied.\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* filename = argv[1];
|
||||||
|
aes* O = new crypt(filename);
|
||||||
|
|
||||||
|
// Read the file to encrypt
|
||||||
|
unsigned char* file;
|
||||||
|
// readFile fait l'aloccation mémoire !!! pensé au free
|
||||||
|
size_t fileLength = O->readFile(&file);
|
||||||
|
printf("%d bytes to be encrypted\n", (int)fileLength);
|
||||||
|
|
||||||
|
// Encrypt the file
|
||||||
|
unsigned char *encryptedFile;
|
||||||
|
int encryptedFileLength;
|
||||||
|
|
||||||
|
if((encryptedFileLength = (dynamic_cast<crypt*>(O))->aesEncrypt((const unsigned char*)file, fileLength, &encryptedFile) ) == -1) {
|
||||||
|
fprintf(stderr, "Encryption failed\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d bytes encrypted\n", encryptedFileLength);
|
||||||
|
std::cerr << "mainCrypt.ex : " << O->PrintAesKey() << std::endl;
|
||||||
|
|
||||||
|
std::string keyFilename = O->exportKey();
|
||||||
|
// std::string keyFilename = O->writeFile(O->getAesKey(), (O->PrintAesKey()).length(), "aesKey.key");
|
||||||
|
printf("Encrypt key written to \"%s\"\n", keyFilename.c_str());
|
||||||
|
|
||||||
|
// Write the encrypted file to its own file
|
||||||
|
std::string encryptedFilename = O->writeFile(encryptedFile, encryptedFileLength);
|
||||||
|
printf("Encrypted message written to \"%s\"\n", encryptedFilename.c_str());
|
||||||
|
|
||||||
|
free(encryptedFile);
|
||||||
|
free(file);
|
||||||
|
delete O;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include "aes.hpp"
|
||||||
|
#include "decrypt.hpp"
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
if(argc != 3) {
|
||||||
|
std::cerr << "An input file is missing.\n ./Decrypt.ex fileToDecrypt AeskeyForDecrypt\n";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t fileLength;
|
||||||
|
unsigned char* fileEncrypted;
|
||||||
|
unsigned char* decryptedFile;
|
||||||
|
|
||||||
|
aes* O2 = new decrypt(argv[1]);
|
||||||
|
O2->importKey(argv[2]);
|
||||||
|
|
||||||
|
fileLength = O2->readFile(&fileEncrypted);
|
||||||
|
std::cerr << "byte to be decrypted : " << fileLength << std::endl;
|
||||||
|
|
||||||
|
int decryptedFileLength = (dynamic_cast<decrypt*>(O2))->aesDecrypt(fileEncrypted, fileLength, &decryptedFile);
|
||||||
|
if( decryptedFileLength == -1) {
|
||||||
|
fprintf(stderr, "Decryption failed\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%d bytes decrypted\n", (int)decryptedFileLength);
|
||||||
|
std::cerr << O2->PrintAesKey() << std::endl;
|
||||||
|
|
||||||
|
// Write the decrypted file to its own file
|
||||||
|
std::string decryptedFilename = O2->writeFile(decryptedFile, decryptedFileLength);
|
||||||
|
printf("Decrypted file written to \"%s\"\n", decryptedFilename.c_str());
|
||||||
|
|
||||||
|
free(decryptedFile);
|
||||||
|
free(fileEncrypted);
|
||||||
|
delete O2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
41
makefile
41
makefile
|
@ -1,11 +1,40 @@
|
||||||
main:
|
EXEC=bin/crypto.ex
|
||||||
@g++ -Wall -Wextra -ggdb -o crypto.ex aes.cpp -lcrypto --std=c++14
|
SRC=aes.cpp
|
||||||
|
|
||||||
|
main: aes.cpp jsoncpp.o
|
||||||
|
@echo "compilation de aes"
|
||||||
|
@g++ -Wall -Wextra -ggdb -o $(EXEC) $(SRC) obj/jsoncpp.o -lcrypto --std=c++14
|
||||||
|
|
||||||
|
jsoncpp.o: jsoncpp.cpp json/json.h json/json-forwards.h
|
||||||
|
@echo "compilation de jsoncpp"
|
||||||
|
@g++ -I ../lib/jsoncpp-master/include/ -Wall -Wextra -std=c++11 -c -ggdb jsoncpp.cpp -o obj/jsoncpp.o
|
||||||
|
|
||||||
|
run2:
|
||||||
|
@./bin/crypt.ex data/file && ./bin/decrypt.ex data/file.enc data/aesKey.key
|
||||||
|
|
||||||
run:
|
run:
|
||||||
@./crypto.ex file
|
@./$(EXEC) file
|
||||||
|
|
||||||
|
decrypt.ex: mainDecrypt.cpp jsoncpp.o aes.hpp
|
||||||
|
@echo "compilation de decrypt.ex"
|
||||||
|
@g++ -Wall -Wextra -ggdb -o bin/decrypt.ex mainDecrypt.cpp obj/jsoncpp.o -lcrypto --std=c++14
|
||||||
|
|
||||||
|
crypt.ex: mainCrypt.cpp jsoncpp.o aes.hpp
|
||||||
|
@echo "compilation de crypt.ex"
|
||||||
|
@g++ -Wall -Wextra -ggdb -o bin/crypt.ex mainCrypt.cpp obj/jsoncpp.o -lcrypto --std=c++14
|
||||||
|
|
||||||
valgrind:
|
valgrind:
|
||||||
@valgrind --leak-check=full --track-origins=yes ./crypto.ex file
|
@valgrind --leak-check=full --track-origins=yes ./$(EXEC) file
|
||||||
|
|
||||||
clean:
|
clean: cleanO cleanB
|
||||||
@rm *.ex
|
|
||||||
|
cleanO:
|
||||||
|
@rm obj/*.o
|
||||||
|
|
||||||
|
cleanB:
|
||||||
|
@rm bin/*.ex
|
||||||
|
|
||||||
|
cleanD:
|
||||||
|
@rm data/*.enc
|
||||||
|
@rm data/*.dec
|
||||||
|
@rm data/*.key
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue