187 Commits
Author SHA1 Message Date
Leon Etienne 6842db6434 professionalize wording 2026-08-08 17:02:53 +02:00
leonetienne 77fca14226 fix git remote ids 2024-09-26 10:26:48 +02:00
Leon Etienne 9aac8d89c0 Install graphviz for doxygen pipelione 2022-10-25 22:18:42 +00:00
Leon Etienne 94e3d846eb Fix readme cropping for doxygen 2022-10-25 22:15:33 +00:00
Leon Etienne fdb2bedd8c Add build status to readme 2022-10-25 21:47:43 +00:00
Leon Etienne 65bfee850d Import working drone config 2022-10-25 21:44:05 +00:00
Leon Etienne 64727ecf7e Cicd-test 2022-10-25 20:10:42 +00:00
Leonetienne 90eb7dbaea Merge branch 'master' of gitea.leonetienne.de:leonetienne/GCrypt 2022-08-12 09:13:10 +02:00
Leonetienne a61546b9be CLI: Fix typo in option name 2022-08-12 09:12:44 +02:00
Leonetienne c9cb647ab8 typo readme 2022-07-07 14:09:26 +02:00
Leonetienne d39a90a412 Improved tests for block class 2022-06-04 00:01:21 +02:00
Leonetienne 35f577dafa Adjust makefile doxygen 2022-06-01 21:35:46 +02:00
Leonetienne 70f1c7b551 Fix image alt tag in readme, that screwed with doxygen 2022-06-01 21:01:38 +02:00
Leonetienne 7012950d6d Update project name in doxygen config 2022-06-01 20:59:26 +02:00
Leonetienne c99b1fd8ee Add docs link to readme 2022-06-01 20:58:31 +02:00
Leonetienne a2922a142f Readme 2022-06-01 19:57:55 +02:00
Leonetienne 819fe3e859 Readme 2022-06-01 19:56:08 +02:00
Leonetienne b4f97a7336 Update readme 2022-06-01 19:55:06 +02:00
Leonetienne df71552ce9 Merge branch 'master' of gitea.leonetienne.de:leonetienne/GCrypt 2022-06-01 16:54:25 +02:00
Leonetienne 8bda01aa53 A bit of code cleanup 2022-06-01 16:54:14 +02:00
Leonetienne 02dd904c79 Fix compiler warning on macos 2022-06-01 15:28:17 +02:00
Leonetienne 2bf492594a Typo readme 2022-06-01 04:01:12 +02:00
Leonetienne b49b76478f Fixes in cli readme 2022-06-01 03:58:48 +02:00
Leonetienne 612b662e9e Update help page in cli readme 2022-06-01 03:47:58 +02:00
Leonetienne a3af14c025 Wording in help page 2022-06-01 03:46:27 +02:00
Leonetienne 2649d89aba Adjust links in readme 2022-06-01 03:32:01 +02:00
Leonetienne 71416651c0 Merge branch 'feature/relaunch' into master 2022-06-01 03:30:55 +02:00
Leonetienne 14bcfb5f88 Add parameter to control progress report interval 2022-06-01 03:30:18 +02:00
Leonetienne 57adf4419a Implement progress output 2022-06-01 03:29:05 +02:00
Leonetienne 55e7092ed4 Update CLI readme 2022-06-01 02:49:49 +02:00
Leonetienne 00dc5916ab Fix docs 2022-06-01 02:34:16 +02:00
Leonetienne 51d4c95965 Doxygen now using makefile 2022-06-01 02:34:11 +02:00
Leonetienne a319e81a38 Fix outdated information in readme 2022-06-01 02:29:20 +02:00
Leonetienne 47756e713d Docs 2022-06-01 02:23:51 +02:00
Leonetienne 403292df64 Bump version 2022-06-01 02:10:08 +02:00
Leonetienne 67212e31b6 Added module for hashing 2022-06-01 02:09:49 +02:00
Leonetienne b3db6ef6c8 Implemented low space-complexity stream decoding for all ioformats 2022-06-01 01:53:52 +02:00
Leonetienne cc5c96b5eb Fix wrong minlen for base ugh 2022-06-01 01:49:10 +02:00
Leonetienne 33622d148b Fix wrong minlen for base uwu 2022-05-31 22:19:01 +02:00
Leonetienne cc6b05dd12 Sophisticated and bug-fixed DataOutput/InputLayer, and added ModuleDecryption 2022-05-31 21:40:13 +02:00
Leonetienne 1a11f406e4 Now by-default prepending a newline to stdout 2022-05-31 18:26:02 +02:00
Leonetienne 628491998d Integrated DataOutputLayer to ModuleGenerateKey 2022-05-31 18:19:12 +02:00
Leonetienne 313c265c0b More streamlined handling of io bases 2022-05-31 18:17:29 +02:00
Leonetienne 30289214f8 Added encryption module, and data output layer 2022-05-31 17:35:05 +02:00
Leonetienne ada88e8139 Fix Indentation 2022-05-31 17:07:45 +02:00
Leonetienne 9d63835876 Add additional methods to data ingestion layer 2022-05-31 15:32:17 +02:00
Leonetienne 7c764c3a11 Forbid instanciation of static classes 2022-05-31 14:28:17 +02:00
Leonetienne ff2355f154 Implement relevant methods for DataIngestionLayer 2022-05-31 14:25:23 +02:00
Leonetienne 22499d5d89 Fix typo in comment 2022-05-31 10:44:05 +02:00
Leonetienne 8a2b219d49 Implement unified istream for ingestion layer 2022-05-27 18:26:48 +02:00
Leonetienne 3695fea2b6 Rename cmake cli target name 2022-05-27 17:21:30 +02:00
Leonetienne 12a6c7c457 Change module GenerateKeyfile to more versatile GenerateKey, which doesnt have to output to a file 2022-05-27 17:21:10 +02:00
Leonetienne e43a3deac9 Implement GenerateKeyfile module 2022-05-27 17:04:16 +02:00
Leonetienne 9f80e326dd Fix Key::WriteToFile method being not const qualified 2022-05-27 17:04:05 +02:00
Leonetienne 9ed4d95036 A bit of cleanup 2022-05-27 16:50:18 +02:00
Leonetienne aac31ea5dc Removed bunch of garbage from main.cpp 2022-05-27 16:14:24 +02:00
Leonetienne 19edd5ce66 More tests on data formatter 2022-05-27 16:08:24 +02:00
Leonetienne facca04951 Added tests for recoding single blocks to all formats 2022-05-27 15:56:28 +02:00
Leonetienne 774dd4d152 Renamed method, and added first test to cli 2022-05-27 15:34:16 +02:00
Leonetienne 0a555855a3 Added test project 2022-05-27 15:27:33 +02:00
Leonetienne 2daf76f30e A bit of error handling and better comments 2022-05-27 14:47:26 +02:00
Leonetienne f858e7fc1b Remove unused code 2022-05-27 03:34:02 +02:00
Leonetienne 33436e55a5 Fix multiple definition issue 2022-05-27 03:30:11 +02:00
Leonetienne cb5fe0fd37 Proper include guard 2022-05-27 03:29:51 +02:00
Leonetienne 5412133e42 Move blocklenght lookup table to Bases.h 2022-05-27 03:27:43 +02:00
Leonetienne 050300c594 Better comment. 2022-05-27 03:01:47 +02:00
Leonetienne 798fdf22b7 Added multiblocks methods to data formatter 2022-05-27 03:00:34 +02:00
Leonetienne 7d9221a1de Got block conversions working... 2022-05-27 02:13:05 +02:00
Leonetienne 651641661e Implemented to-block methods of dataformatter 2022-05-26 23:22:04 +02:00
Leonetienne 8b90a5bf07 Implement output formatting module 2022-05-26 22:30:59 +02:00
Leonetienne cad651eab5 Add exceptoins 2022-05-26 22:06:04 +02:00
Leonetienne bf94eae8e7 Added module PrepareKey 2022-05-26 21:56:15 +02:00
Leonetienne 4ca536a38a Add Configuration class to intelligently decide default settings 2022-05-26 21:32:55 +02:00
Leonetienne 81c106c2c6 Adjust cli parameter definitions 2022-05-26 20:19:15 +02:00
Leonetienne 78c5c00944 GCryptLib version bump 2022-05-26 19:59:16 +02:00
Leonetienne 1ea89541f9 More streamlined naming scheme for digestion method of ghash 2022-05-26 19:57:14 +02:00
Leonetienne 3f990b30d0 Fix dangling hint 2022-05-26 19:34:58 +02:00
Leonetienne 3a7802d314 Fix apple linker problem 2022-05-26 19:25:40 +02:00
Leonetienne 44248914ef Added how2compile to readme 2022-05-26 19:05:35 +02:00
Leonetienne 5b0ea29b7b Add new visualizations 2022-05-26 18:59:59 +02:00
Leonetienne e7d44a871d Fix bad filename in visualization 2022-05-26 18:59:05 +02:00
Leonetienne 700a308fd6 Tidied up example/static test executables 2022-05-26 18:24:44 +02:00
Leonetienne 1cd465c977 Got rid of flexblocks 2022-05-26 15:47:24 +02:00
Leonetienne 05b29f32df Many methods now using vectors of blocks instead of flexblocks 2022-05-26 15:04:39 +02:00
Leonetienne f4df0f9ae5 Added a method to GPrng to get a random uint32, which is about twice as fast as GetRandom<uint32_t> 2022-05-26 12:52:04 +02:00
Leonetienne 6a5b9c1287 Made GPrng::GetBlock() faster by a factor of 100 2022-05-26 12:23:27 +02:00
Leonetienne bd9511c8b9 Unstupided mathematical expression 2022-05-26 04:40:23 +02:00
Leonetienne 02d12513f7 Fix markup in artifacts 2022-05-26 04:25:02 +02:00
Leonetienne 85f418307f Add artifact directory 2022-05-26 04:23:32 +02:00
Leonetienne 11e9d85a4f Implement direct file i/o to- and from blocks. 2022-05-26 04:22:42 +02:00
Leonetienne 1678e28b4d Add additional jumbling-up in feistel rounds 2022-05-26 02:44:22 +02:00
Leonetienne bdbf0ffa64 Implement new sbox, reduction, and expansion function 2022-05-26 02:30:16 +02:00
Leonetienne 02b27093ef Replaced halfblock with instanciation of Basic_Block 2022-05-26 00:55:24 +02:00
Leonetienne 3e1fa2c00a Typo in comment 2022-05-25 16:51:38 +02:00
Leonetienne c108b4a4b0 Templatified block class 2022-05-25 16:38:16 +02:00
Leonetienne ecd64e8637 Merge origin feature/relaunch into feature/relaunch 2022-05-25 14:58:40 +02:00
Leonetienne c66271eafe Fix macos compile issue 2022-05-25 14:57:40 +02:00
Leonetienne a55a8f221f Cipher now using new block class 2022-05-25 13:05:25 +02:00
Leonetienne 96ba2485c4 Added bitshift methods to block class 2022-05-25 12:54:26 +02:00
Leonetienne d8a39ad46f Add SetBit, and FlipBit methods to block 2022-05-24 23:51:17 +02:00
Leonetienne ac4b389efc Add GetBit() method to Block 2022-05-24 23:18:39 +02:00
Leonetienne 6c09afefba Implemented remaining operands for block class 2022-05-24 22:09:06 +02:00
Leonetienne ddbc209b58 Fix blanklines in block.cpp 2022-05-24 01:07:00 +02:00
Leonetienne 4848f887d4 Add comment 2022-05-24 01:05:45 +02:00
Leonetienne 30a57caadc [Progress:] Completely re-done Block class to not use bitsets, and provide custom operators. 2022-05-24 01:02:06 +02:00
Leonetienne 41dc2ef65e Experimentally implement matrix-mult 2022-05-23 22:42:14 +02:00
Leonetienne 873101833d Typo readme 2022-05-22 23:27:23 +02:00
Leonetienne 8873207901 Merge branch 'feature/relaunch' of gitea.leonetienne.de:leonetienne/GCrypt into feature/relaunch 2022-05-22 23:23:31 +02:00
Leonetienne c97bfd5742 Wording readme 2022-05-22 23:22:54 +02:00
Leonetienne f5b045c488 Fix typo in readme 2022-05-22 23:16:57 +02:00
Leonetienne c28f3b45cf Fix typo in readme 2022-05-22 22:39:25 +02:00
Leonetienne 66a909c4d7 Fix invalid html in readme 2022-05-22 21:25:53 +02:00
Leonetienne e4941429cc Added another visualization to readme 2022-05-22 21:22:02 +02:00
Leon Etienne 950c591fc9 Put images in readme next to each other 2022-05-22 20:55:04 +02:00
Leonetienne e5685e1c59 Readme and visualizations 2022-05-22 20:40:56 +02:00
Leonetienne 4ca1b74e24 Improved security 2022-05-22 20:13:41 +02:00
Leonetienne 4ce86b8f54 Add method to load and save keyfiles 2022-05-22 17:54:26 +02:00
Leonetienne 994c5dc503 Fix include guard 2022-05-22 17:54:04 +02:00
Leonetienne 57b1d7ac2a Indentation 2022-05-22 17:32:54 +02:00
Leonetienne e67067b65c Bump gcryptlib version 2022-05-22 17:30:15 +02:00
Leonetienne e6567f3c8b Now using actual include guards 2022-05-22 17:29:38 +02:00
Leonetienne 4d74153e92 Implemented a Key::Random() method 2022-05-22 17:24:56 +02:00
Leonetienne 5770a0d45a Implemented GPrng pnrg 2022-05-22 16:54:40 +02:00
Leonetienne 0c1bbf362e GHash now uses a full-size key for the cipher 2022-05-22 14:30:24 +02:00
Leonetienne 3e2f269962 Adjusted tests 2022-05-22 14:29:21 +02:00
Leonetienne f52758f1ce Cmake make colored output 2022-05-22 14:21:21 +02:00
Leonetienne bc780f3a4f Moved utility functions to cpp file 2022-05-22 14:13:10 +02:00
Leonetienne 9fce71e8ba Added padding direction option for Util::StringToBitblock 2022-05-22 13:54:03 +02:00
Leonetienne 1a2a74cdac Implemented a key class 2022-05-22 13:45:40 +02:00
Leonetienne c0b6bff8b7 Renamed class GCryptWrapper to GWrapper 2022-05-22 13:07:40 +02:00
Leonetienne 875e9a34f9 Renamed method DigestFlexblock to CipherFlexblock, and made it public 2022-05-22 13:04:20 +02:00
Leonetienne 923e37bde6 Renamed class Hasher to GHash 2022-05-22 12:55:39 +02:00
Leonetienne 2590bd9a48 Renamed class Cipher to GCipher 2022-05-22 12:51:58 +02:00
Leonetienne d45ca55ff3 Cmake specify color output as always 2022-05-22 12:51:29 +02:00
Leonetienne 9328e74461 Fix warning 2022-05-22 12:31:48 +02:00
Leonetienne 0d1755a22e Warnings are now treated as errors 2022-05-22 12:31:33 +02:00
Leonetienne 52ff44edce Added class for hashing, that is now used for password to key transformation 2022-05-22 00:23:10 +02:00
Leonetienne a7a30e13bf Implemented digestion (feeding one block at a time) 2022-05-21 20:41:09 +02:00
Leonetienne 549838e7d1 Added warning to readme 2022-05-21 20:40:44 +02:00
Leonetienne 038ae1001a Merge branch 'master' of gitea.leonetienne.de:leonetienne/GCrypt 2022-05-20 10:19:45 +02:00
Leon Etienne 41737fe5f2 Fix typo in code samples in readme 2022-05-17 14:16:17 +02:00
Leonetienne 39d175ae1c Add ideas for cli relaunch 2022-05-17 12:32:30 +02:00
Leonetienne 1d790ee10f Switch to https-based git submodules 2022-05-17 01:31:26 +02:00
Leonetienne 0c55485c9a Version bump gcryptlib 2022-05-17 01:18:00 +02:00
Leonetienne 65f4f6e582 Step 2: fix broken submodule config 2022-05-17 01:17:48 +02:00
Leonetienne f60cd3877e Step 1: fix broken submodule config 2022-05-17 01:16:25 +02:00
Leonetienne cd5f0f0646 Streamlined workflow of GCryptCLI 2022-05-17 01:13:42 +02:00
Leonetienne d64eea5be7 unbloated readme 2022-05-16 23:49:08 +02:00
Leonetienne 43bbea9f1e Fix dangling var in cmakelist of gcryptlib 2022-05-16 23:47:36 +02:00
Leonetienne be0a30bae9 Update readme 2022-05-16 23:37:14 +02:00
Leonetienne 2945d2a285 Translated encryption/decryption consistency tests to catch2 2022-05-16 23:26:29 +02:00
Leonetienne 43f8608073 Translated password2key transformation collision resistance tests to catch2 2022-05-16 23:03:55 +02:00
Leonetienne 0f004f54c6 Renamed legacy wrapper class to GCryptWrapper 2022-05-16 22:50:52 +02:00
Leonetienne 8608bf66ca Translated gcrypt wrapper tests to catch2 2022-05-16 22:47:41 +02:00
Leonetienne a00ec743d7 GCryptLib: Fix include paths 2022-05-16 22:35:28 +02:00
Leonetienne 28ddbfc79e Fix directory structure for include dir 2022-05-16 22:22:42 +02:00
Leonetienne 5ed81cda80 Doxygen adjustment, and better directory name for GCryptLib 2022-05-16 22:19:20 +02:00
Leonetienne 243181944e Gcryptlib: new brace style, and moved to Leonetienne namespace 2022-05-16 22:15:34 +02:00
Leonetienne 70af3619a2 retabbed gcryptlib 2022-05-16 22:01:52 +02:00
Leonetienne 8948515be5 New directory structure for the crypto library 2022-05-16 21:43:22 +02:00
Leon Etienne f220b5aefc Added comment 2022-05-16 00:21:01 +02:00
Leonetienne 3657838a6e Remove bunch of microsoft crap 2022-05-13 22:28:01 +02:00
Leon Etienne b6ed2001e1 Typos 2022-05-13 22:12:59 +02:00
Leon Etienne 297b5c068b Rename header in cli/readme 2022-05-13 12:46:56 +02:00
Leon Etienne 39fd063fcd Update readme.md 2022-05-13 11:58:34 +02:00
Leon Etienne 4cbd6bfd27 Update documentation for PasswordToKey function 2022-05-13 11:37:08 +02:00
Leon Etienne 520924e018 Update 'readme.md' 2022-04-13 18:56:56 +02:00
Leonetienne 6c0f8cf103 Rename cli cmake target 2022-03-18 17:10:32 +01:00
Leon Etienne 3c2aa9c14a Fix filename 2022-03-16 22:45:56 +01:00
Leonetienne 4969840025 readme 2022-03-16 01:42:19 +01:00
Leonetienne d78bf7775f Update readme 2022-03-16 01:37:53 +01:00
Leonetienne 6a071c764d Implemented hashsum mode 2022-03-16 01:31:28 +01:00
Leonetienne 60340e878a Updated hazelnupp 2022-03-13 19:48:29 +01:00
Leonetienne a88dc386a9 fix broken base uwu 2022-03-13 19:36:29 +01:00
Leonetienne 51bebbc2df more digits for uwu base 2022-03-13 19:23:13 +01:00
Leonetienne f08b1337c7 Fix build command 2022-03-13 19:15:43 +01:00
Leonetienne f522025b6c Fix build command 2022-03-13 19:15:29 +01:00
Leonetienne 193b01b643 Updated installation instructions, and removed useless non-crossplatform binary 2022-03-13 19:13:54 +01:00
Leonetienne 4e7bb762f1 readme 2022-03-13 19:08:09 +01:00
Leonetienne 77dc9c754c more uwu digits and readme 2022-03-13 19:06:14 +01:00
Leonetienne a006c015f6 readme 2022-03-13 18:56:55 +01:00
Leonetienne 830dd66964 More uwu digits, and included warning in readme 2022-03-13 18:55:56 +01:00
Leonetienne 5b8d9f5483 readme 2022-03-13 18:26:24 +01:00
Leonetienne cc447371d4 readme 2022-03-13 18:25:20 +01:00
Leonetienne ab253e06a5 readme 2022-03-13 18:24:11 +01:00
Leonetienne f5a4989b6e readme 2022-03-13 18:23:16 +01:00
Leonetienne e260dbd1f0 Merge branch 'master' of github.com:Leonetienne/GCrypt 2022-03-13 18:22:30 +01:00
2 changed files with 9 additions and 12 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ PROJECT_NUMBER =
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short. # quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = "Ghetto (but also super easy) cryptography!" PROJECT_BRIEF = "An educational cryptography library (GCrypt / GNU Crypt)"
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55 # in the documentation. The maximum height of the logo should not exceed 55
+8 -11
View File
@@ -1,24 +1,22 @@
[![Build Status](https://drone.leonetienne.de/api/badges/leonetienne/GCrypt/status.svg)](https://drone.leonetienne.de/leonetienne/GCrypt) [![Build Status](https://drone.leonetienne.de/api/badges/leonetienne/GCrypt/status.svg)](https://drone.leonetienne.de/leonetienne/GCrypt)
# GCrypt # GCrypt
*(GhettoCrypt), because frankly I have no idea what the fuck I'm doing* *GCrypt (GNU Crypt) — an educational project for learning how block ciphers work*
<sub>*Please don't use this for anything critical*</sub> <sub>*Please don't use this for anything critical*</sub>
> **Note:** This project is unrelated to [libgcrypt](https://www.gnupg.org/software/libgcrypt/index.html), the cryptographic library used by GnuPG. Any naming similarity is coincidental — "GCrypt" here just stands for "GNU Crypt".
## [Documentation](https://gcrypt.rtfm.leonetienne.de/) ## [Documentation](https://gcrypt.rtfm.leonetienne.de/)
## What the hell is this? ## What is this?
An educational project on implementing a block cipher using a feistel network. An educational project on implementing a block cipher using a feistel network.
This block cipher employs a few modes of operation. Read more about them [here](#modes-of-operation). This block cipher employs a few modes of operation. Read more about them [here](#modes-of-operation).
## Features ## Features
* It has very easy syntax * Very easy to use
* It's slow
* It's probably super insecure
* But the syntax is pythonlike easy🙇
* 512-bit keys * 512-bit keys
* Not performance-optimized, and not audited for security
It's pretty ghetto, you know?
## What are the actual advantages? ## What are the actual advantages?
* It's two files to import into your project * It's two files to import into your project
@@ -30,9 +28,8 @@ It's pretty ghetto, you know?
* For data obfuscation * For data obfuscation
* If your only other option would be no encryption at all * If your only other option would be no encryption at all
### I am not kidding, don't use this for critical stuff! Homebrew ciphers tend to be shit! ### Seriously, don't use this for anything critical. Homebrew ciphers are rarely secure — this one included.
Especially mine!🗡️ Even assuming it's a good cipher, its implementation leaves a lot to be desired in terms of being cryptographically secure.
Even assumed it's a good cipher, it's implementation leaves a lot to be desired in terms of being cryptographically secure.
## How do I use this? ## How do I use this?
### *"I don't care about the library. Just let me use it from the command line!"* ### *"I don't care about the library. Just let me use it from the command line!"*