Wstępnie dodana klasa zarządzania szyfrowaniem. Dodana funckja szyfrująca i generowanie kluczy. Nie osadzono w klasie create cargo

This commit is contained in:
yanczi 2025-10-26 01:14:55 +02:00
parent de7ced2939
commit b80d983bc7
6 changed files with 67 additions and 14 deletions

View file

@ -36,6 +36,7 @@
#include "Txtpp.h"
#include "xxhash.h"
#include "CompressingManager.h"
#include "EncryptionManager.h"
@ -72,7 +73,7 @@ private:
std::vector<std::string> filesList;
EncryptionManager crypt;
// listy wyj¹tków
std::vector<std::string> ignoreList;

28
EncryptionManager.cpp Normal file
View file

@ -0,0 +1,28 @@
#include "EncryptionManager.h"
EncryptionManager::EncryptionManager()
{
if (sodium_init() < 0) {
throw std::runtime_error("libsodium init failed");
}
}
std::vector<char> EncryptionManager::encrypt(const std::vector<char>& raw)
{
randombytes_buf(key.data(), key.size());
randombytes_buf(nonce.data(), nonce.size());
std::vector<char> crypt(raw.size());
if (crypto_stream_chacha20_ietf_xor_ic(
reinterpret_cast<unsigned char*>(crypt.data()),
reinterpret_cast<const unsigned char*>(raw.data()),
static_cast<unsigned long long>(raw.size()),
nonce.data(),
0,
key.data()) != 0) {
throw std::runtime_error("crypto_stream_chacha20_ietf_xor_ic failed");
}
return crypt;
}

20
EncryptionManager.h Normal file
View file

@ -0,0 +1,20 @@
#pragma once
#include <sodium.h>
#include <vector>
#include <array>
#include <stdexcept>
class EncryptionManager
{
public:
EncryptionManager();
~EncryptionManager() = default;
std::vector<char> encrypt(const std::vector<char>&);
//std::vector<char> decrypt(const std::vector<char>&);
private:
std::array<unsigned char, crypto_stream_chacha20_ietf_KEYBYTES> key{};
std::array<unsigned char, crypto_stream_chacha20_ietf_NONCEBYTES> nonce{};
};

View file

@ -44,6 +44,8 @@ void RenderHelp()
" -p Pack files from the specified directory \n"
" -e Pack and encrypted from the specified directory \n"
" -f Pack the files according to the guidelines given in the <directory>.txt \n"
" -s Pack and encrypted \n"
" -cs Pack and compress \n"
" \n"
"Extracting: \n"
" -x Extract files from the specified container \n"
@ -55,7 +57,7 @@ void RenderHelp()
"Keys: \n"
" \n"
" {compress} - Compressing files \n"
" {crypt} - Encrypted files with AES256 \n"
" {crypt} - Encrypted files with ChaCha20 \n"
" {ignore} - Ignoring concrete files \n"
" \n"
" /path/to/file.ext - Concrete file \n"

View file

@ -104,13 +104,13 @@
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\lz4\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>3rd\ftxui\Debug;3rd\lz4\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>3rd\ftxui\Debug;3rd\lz4\lib;3rd\libsodium\lib\Debug</AdditionalLibraryDirectories>
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -122,18 +122,19 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\lz4\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>3rd\ftxui\Release;3rd\lz4\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib</AdditionalDependencies>
<AdditionalLibraryDirectories>3rd\libsodium\lib\Release;3rd\ftxui\Release;3rd\lz4\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>liblz4_static.lib;ftxui-component.lib;ftxui-dom.lib;ftxui-screen.lib;libsodium.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="CompressingManager.cpp" />
<ClCompile Include="CreateCargo.cpp" />
<ClCompile Include="EncryptionManager.cpp" />
<ClCompile Include="ExtractCargo.cpp" />
<ClCompile Include="Interface.cpp" />
<ClCompile Include="ViewCargo.cpp" />
@ -143,6 +144,7 @@
<ClInclude Include="CompressingManager.h" />
<ClInclude Include="CreateCargo.h" />
<ClInclude Include="DataStruct.h" />
<ClInclude Include="EncryptionManager.h" />
<ClInclude Include="ExtractCargo.h" />
<ClInclude Include="Interface.h" />
<ClInclude Include="Txtpp.h" />

View file

@ -27,15 +27,15 @@
<ClCompile Include="ViewCargo.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="xxhash.c">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="Interface.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="CompressingManager.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="EncryptionManager.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CreateCargo.h">
@ -53,15 +53,15 @@
<ClInclude Include="DataStruct.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="xxhash.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="Interface.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="CompressingManager.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="EncryptionManager.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="icon.ico">