diff --git a/INCLUDE/GhettoCipher.cpp b/INCLUDE/GhettoCipher.cpp index a4a6200..045a5f7 100644 --- a/INCLUDE/GhettoCipher.cpp +++ b/INCLUDE/GhettoCipher.cpp @@ -1,6 +1,34 @@ +/* +* BSD 2-Clause License +* +* Copyright (c) 2021, Leon Etienne +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* 2. 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. +*/ + #include "GhettoCipher.h" -/*** ./../Feistel/Cipher.cpp ***/ +/*** ./../GhettoCrypt/Cipher.cpp ***/ #include @@ -128,7 +156,7 @@ void GhettoCipher::Cipher::ZeroKeyMemory() const GhettoCipher::Block GhettoCipher::Cipher::emptyBlock; -/*** ./../Feistel/Feistel.cpp ***/ +/*** ./../GhettoCrypt/Feistel.cpp ***/ GhettoCipher::Feistel::Feistel(const Block& key) @@ -336,7 +364,7 @@ void GhettoCipher::Feistel::ZeroKeyMemory() #endif -/*** ./../Feistel/GhettoCipherWrapper.cpp ***/ +/*** ./../GhettoCrypt/GhettoCipherWrapper.cpp ***/ std::string GhettoCipher::GhettoCryptWrapper::EncryptString(const std::string& cleartext, const std::string& password) diff --git a/INCLUDE/GhettoCipher.h b/INCLUDE/GhettoCipher.h index 73c5e7f..eda0227 100644 --- a/INCLUDE/GhettoCipher.h +++ b/INCLUDE/GhettoCipher.h @@ -1,6 +1,34 @@ +/* +* BSD 2-Clause License +* +* Copyright (c) 2021, Leon Etienne +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* 2. 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. +*/ + #pragma once -/*** ./../Feistel/GhettoCipherWrapper.h ***/ +/*** ./../GhettoCrypt/GhettoCipherWrapper.h ***/ #pragma once #include @@ -36,7 +64,7 @@ namespace GhettoCipher }; } -/*** ./../Feistel/Flexblock.h ***/ +/*** ./../GhettoCrypt/Flexblock.h ***/ #pragma once #include @@ -47,7 +75,7 @@ namespace GhettoCipher typedef std::string Flexblock; } -/*** ./../Feistel/Config.h ***/ +/*** ./../GhettoCrypt/Config.h ***/ #pragma once @@ -57,7 +85,7 @@ namespace GhettoCipher constexpr int N_ROUNDS = 64; } -/*** ./../Feistel/Halfblock.h ***/ +/*** ./../GhettoCrypt/Halfblock.h ***/ #pragma once #include @@ -68,7 +96,7 @@ namespace GhettoCipher typedef std::bitset Halfblock; } -/*** ./../Feistel/Block.h ***/ +/*** ./../GhettoCrypt/Block.h ***/ #pragma once #include @@ -78,7 +106,7 @@ namespace GhettoCipher typedef std::bitset Block; } -/*** ./../Feistel/Util.h ***/ +/*** ./../GhettoCrypt/Util.h ***/ #pragma once #include @@ -334,7 +362,7 @@ namespace GhettoCipher } } -/*** ./../Feistel/Keyset.h ***/ +/*** ./../GhettoCrypt/Keyset.h ***/ #pragma once #include @@ -344,7 +372,7 @@ namespace GhettoCipher typedef std::array Keyset; } -/*** ./../Feistel/Feistel.h ***/ +/*** ./../GhettoCrypt/Feistel.h ***/ #pragma once @@ -404,7 +432,7 @@ namespace GhettoCipher }; } -/*** ./../Feistel/Cipher.h ***/ +/*** ./../GhettoCrypt/Cipher.h ***/ #pragma once diff --git a/INCLUDE/generate.sh b/INCLUDE/generate.sh index 8ec48fc..5f6191f 100644 --- a/INCLUDE/generate.sh +++ b/INCLUDE/generate.sh @@ -1,5 +1,5 @@ # Compile single-header -deggl -i ../Feistel/*.cpp --out GhettoCipher --loc +deggl -i ../GhettoCrypt/*.cpp --out GhettoCipher --loc --license-file ../LICENSE # Verify that this builds cleanly via g++ echo "Verifying build..." diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..10464c1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2021, Leon Etienne +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. 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. diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..60ca2cd --- /dev/null +++ b/readme.md @@ -0,0 +1,57 @@ +# Ghettocrypt +*because frankly i have no idea what the fuck i'm doing* +*Please don't use this for anything critical* + +## What the hell is this? +An educational project on implementing a block cipher using a feistel network. +To provide at least some security this is using some DES-inspired tactics like *cipher block chaining* and *output feedback modus*. +This way this provides relatively good diffusion. + +## Features +* It has a very easy syntax +* It's slow +* It's probably super insecure +* It leaves your keys sprinkled in ram +* But the syntax is pythonlike easy🙇 +It's pretty ghetto, you know? + +## What are the actual advantages? +* It's two files to import into the project +* 1 Line to use +* 100% cross plattform + +## When could i use it? +* For data obfuscation +* If your only other option would be no encryption at all + +### I am not kidding, don't use this for critical stuff! Homebrew ciphers are most often shit! +Especially mine!🦯 + +## LICENSE +``` +BSD 2-Clause License + +Copyright (c) 2021, Leon Etienne +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. 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. +```