Delete CRC. Przywrucono xxHash z pakietu LZ4. Dodano wstępną funkcję henerowania pliku HPP z kluczem i nonce.

This commit is contained in:
yanczi 2025-11-01 22:30:28 +01:00
parent a0a2f3e1d6
commit 967e1e9c13
12 changed files with 66 additions and 83 deletions

View file

@ -174,8 +174,8 @@ uint8_t CreateCargo::CheckFileOnTheList(const std::string& path, std::vector<cha
}
else
{
output = std::move(input);
//output = crypt.encrypt(input);
//output = std::move(input);
output = crypt.encrypt(input);
return RAW_FILE;
}
}
@ -188,8 +188,8 @@ uint8_t CreateCargo::CheckFileOnTheList(const std::string& path, std::vector<cha
return ZIP_FILE;
}
output = std::move(input);
//output = crypt.encrypt(input);
//output = std::move(input);
output = crypt.encrypt(input);
return RAW_FILE;
}
@ -226,7 +226,7 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
f.close();
//Tworzenie hashu CRC
uint32_t crc = crc32(buffor);
const uint64_t crc = XXH64(buffor.data(), buffor.size(), VERSION);
//Kompresjia
std::vector<char> zip;
@ -333,16 +333,6 @@ uint64_t CreateCargo::fnv64(const std::string& data)
return hash;
}
//-----------------------------------------------------------------------------
// Wygenerój CRC32 HASH integralnoœci
//-----------------------------------------------------------------------------
uint32_t CreateCargo::crc32(const std::vector<char>& buffer)
{
boost::crc_32_type crc;
crc.process_bytes(buffer.data(), buffer.size());
return crc.checksum();
}
//-----------------------------------------------------------------------------
// Sprawdzanie czy plik znajduje się na liście
//-----------------------------------------------------------------------------
@ -454,7 +444,7 @@ bool CreateCargo::WriteCargo()
cargo.close();
// Zapisywanie klucza szyfrującego
//crypt.saveKey(catalogPath);
crypt.saveKey(catalogPath);
std::cout << "The container was successfully created! " << cargoFile << std::endl;

View file

@ -30,11 +30,10 @@
#include <utility>
#include <memory>
#include <string>
#include <boost/crc.hpp>
#include <xxhash.h>
#include "DataStruct.h"
#include "Txtpp.h"
#include "xxhash.h"
#include "CompressingManager.h"
#include "EncryptionManager.h"
@ -124,9 +123,6 @@ private:
// Wygenerój FNV-1a HASH
uint64_t fnv64(const std::string& data);
// CRC
uint32_t crc32(const std::vector<char>&);
// Rozdzielanie paternu od œcie¿ki
void ExtPatternAndPathDetection(const std::vector<std::string>&, std::vector<std::string>&, std::vector<std::string>&);

View file

@ -21,8 +21,6 @@
#include <cstdint>
#include <string>
#include <boost/crc.hpp>
#define EXTENSION "pak"
#define SIGNATURE "XPAK"
@ -64,6 +62,6 @@ struct FilesTable
uint64_t hashName;
uint64_t offset;
uint32_t size;
uint32_t crc;
uint64_t crc;
uint8_t isZip;
};

View file

@ -54,13 +54,9 @@ void EncryptionManager::saveKey(const std::string& path)
std::time_t now = std::time(nullptr);
const uint32_t time = static_cast<uint32_t>(now);
// Przekonwertuj array z kluczem i nonce na vector char
std::vector<char> keyVec(reinterpret_cast<const char*>(key.data()), reinterpret_cast<const char*>(key.data()) + key.size());
std::vector<char> nonceVec(reinterpret_cast<const char*>(nonce.data()), reinterpret_cast<const char*>(nonce.data()) + nonce.size());
// Wygeneruj crc kluczy
const uint16_t crcKey = crc16(keyVec);
const uint16_t crcNonce = crc16(nonceVec);
const uint64_t crcKey = XXH64(key.data(), key.size(), 0);
const uint64_t crcNonce = XXH64(nonce.data(), nonce.size(), 0);
// Zapisz ten œmietnik do pliku KEY
std::ofstream file(path + ".key", std::ios::binary);
@ -77,6 +73,23 @@ void EncryptionManager::saveKey(const std::string& path)
if (!file.good()) { std::cout << "Dupa nie zapisa³o" << std::endl; }
file.close();
saveCppHeadFile(path);
}
// Generowanie pliku nag³ówkowego CPP z kluczem i nonce
void EncryptionManager::saveCppHeadFile(const std::string& path)
{
const std::string headerText =
"// Plik wygenerowany przy wykorzystaniu exPAK\n\n"
"// Klucz deszyfruj¹cy\n"
"const std::array<unsigned char, crypto_stream_chacha20_ietf_KEYBYTES> key{};\n\n"
"// Ci¹g nonce\n"
"const std::array<unsigned char, crypto_stream_chacha20_ietf_NONCEBYTES> nonce{};";
std::ofstream file(path + ".hpp");
file << headerText;
file.close();
}
// Wczytaj klucz
@ -84,11 +97,3 @@ void EncryptionManager::loadKey(const std::string& path)
{
}
// Wygeneruj CRC16
uint16_t EncryptionManager::crc16(const std::vector<char>& buffer)
{
boost::crc_16_type crc;
crc.process_bytes(buffer.data(), buffer.size());
return crc.checksum();
}

View file

@ -7,7 +7,7 @@
#include <fstream>
#include <ctime>
#include <iostream>
#include <boost/crc.hpp>
#include <xxhash.h>
#include "DataStruct.h"
class EncryptionManager
@ -28,5 +28,5 @@ private:
bool keyReady;
void generateKeys();
uint16_t crc16(const std::vector<char>&);
void saveCppHeadFile(const std::string&);
};

View file

@ -114,9 +114,9 @@ bool ExtractCargo::CheckCargoFile()
//-----------------------------------------------------------------------------
// Sprawdzanie sumy kontrolnej
//-----------------------------------------------------------------------------
bool ExtractCargo::HashValid(const std::vector<char>& data, const uint32_t& crc)
bool ExtractCargo::HashValid(const std::vector<char>& data, const uint64_t& crc)
{
uint32_t actualCrc = crc32(data);
uint64_t actualCrc = XXH64(data.data(), data.size(), VERSION);
if (actualCrc != crc)
{
@ -126,16 +126,6 @@ bool ExtractCargo::HashValid(const std::vector<char>& data, const uint32_t& crc)
return true;
}
//-----------------------------------------------------------------------------
// Wygenerój CRC32 HASH integralnoœci
//-----------------------------------------------------------------------------
uint32_t ExtractCargo::crc32(const std::vector<char>& buffer)
{
boost::crc_32_type crc;
crc.process_bytes(buffer.data(), buffer.size());
return crc.checksum();
}
//-----------------------------------------------------------------------------
// Pobieranie nagłówków plików
//-----------------------------------------------------------------------------

View file

@ -28,10 +28,9 @@
#include <sstream>
#include <cstdint>
#include <string>
#include <boost/crc.hpp>
#include <xxhash.h>
#include "DataStruct.h"
#include "xxhash.h"
#include "CompressingManager.h"
class ExtractCargo {
@ -69,10 +68,7 @@ private:
void LoadFilesTable();
// Sprawdzanie sumy kontrolnej
bool HashValid(const std::vector<char>&, const uint32_t&);
// CRC
uint32_t crc32(const std::vector<char>&);
bool HashValid(const std::vector<char>&, const uint64_t&);
// Utwórz katalog
void CreateDirections(std::filesystem::path);

View file

@ -1,23 +0,0 @@
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,26 @@
xxHash Library
Copyright (c) 2012-2021 Yann Collet
All rights reserved.
BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

5
test.hpp Normal file
View file

@ -0,0 +1,5 @@
// Plik wygenerowany przy wykorzystaniu exPAK
const std::array<unsigned char, crypto_stream_chacha20_ietf_KEYBYTES> key{};
const std::array<unsigned char, crypto_stream_chacha20_ietf_NONCEBYTES> nonce{};

BIN
test.key

Binary file not shown.

View file

@ -104,7 +104,7 @@
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include;3rd\xxhash\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@ -122,7 +122,7 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<AdditionalIncludeDirectories>3rd\crc\include;3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>3rd\ftxui\include;3rd\libsodium\include;3rd\lz4\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>