Update readme
This commit is contained in:
parent
afa07d0aca
commit
fc6208f08a
@ -23,9 +23,7 @@ Have these depencies installed:
|
||||
6) Compile: `make`.
|
||||
The executable `gcrypt` should now lie in `build/`.
|
||||
|
||||
If you want to use this globally, you could move it to `/usr/bin/`, or some other location in your $PATH.
|
||||
|
||||
### Options and flags
|
||||
If you want to use this globally, you could move it to `/usr/bin/`, or some other location in your $PATH. ### Options and flags
|
||||
All arguments and flags:
|
||||
```
|
||||
CLI for the GCrypt cipher/obfuscator
|
||||
@ -204,6 +202,14 @@ $ gcrypt -e --keyask --intext "hello, world!" --iobase-ugh
|
||||
Grr... Wha-? Aah! Aah! Uh-huh... Aah! Grr... Aah! Aah! Uh-huh... Ah... Ugh Grr... Ugh Pft! Nu-uh... Gah! Bah! Huh...? Ah... Uh-huh... Wha-? Pft! Nu-uh... Ugh Wha-? Psh! Agh! Ah... Aah! Nu-uh... Psh! Pft! Nu-uh... Psh! Shh! Gah! Ah... Pft! Gah! Shh! Bah! Gah! Uh-huh... Gah! Duh! Aah! Uh-huh... Er- Nu-uh... Gah! Wha-? Pft! Er- Shh! Ah... Huh...? Er- Wha-? Uh-huh... Ah... Shh! Ugh Bah! Wha-? Uaah! Ah... Nu-uh... Uh-huh... Ugh Pft! Pft! Gah! Shh! Shh! Wha-? Bah! Ugh Grr... Aah! Pft! Nu-uh... Ah... Aah! Agh! Er- Psh! Uaah! Nu-uh... Ugh Wha-? Uh-huh... Shh! Pft! Aah! Agh! Grr... Agh! Agh! Grr... Pft! Wha-? Wha-? Uh-huh... Aah! Ugh Aah! Pft! Gah! Bah! Huh...? Ugh Bah! Uaah! Gah! Bah! Duh! Duh! Uh-huh... Grr... Ah... Grr... Ugh Ah... Pft!
|
||||
```
|
||||
|
||||
Yes, you can send these... *adventorous* texsts to your friends, and they can actually decipher them
|
||||
back to the original message :). Almost going a bit into the steganography territory here, hehe.
|
||||
|
||||
These weird number bases don't impact security at all. This is because they are just that.
|
||||
Number bases, to represent a bunch of bytes, that is our ciphertext.
|
||||
|
||||
These just bring a bit more fun into the big world of cryptography :).
|
||||
|
||||
## LICENSE
|
||||
```
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
@ -9,15 +9,15 @@ This block cipher employs a few modes of operation. Read more about them [here](
|
||||
## Features
|
||||
* It has very easy syntax
|
||||
* It's slow
|
||||
* It absolutely tanks your ram when working with files
|
||||
* Even leaves some key fragments in there✨
|
||||
* It's probably super insecure
|
||||
* But the syntax is pythonlike easy🙇
|
||||
* 512-bit keys
|
||||
|
||||
It's pretty ghetto, you know?
|
||||
|
||||
## What are the actual advantages?
|
||||
* It's two files to import into your project
|
||||
* No dependencies
|
||||
* 1 Line to use
|
||||
* 100% cross plattform
|
||||
|
||||
@ -110,6 +110,7 @@ Without saying, this is more advanced and not as-easy as the methods supplied in
|
||||
* [CBC] This block cipher makes use of cipher block chaining. Nothing special.
|
||||
* [IV] The initialization vector is indeed a bit of special sauce, as it depends on your key instead of being static. It is generated by running the feistel network on *E(m=seed, k=seed)*, which is a one-way function, because *m=k*.
|
||||
* [RRKM] Never heard of a mode like this, so i've named it **R**olling**R**ound**K**ey**M**ode. This basically means that the round key extrapolation is carried out continously over EVERY round on EVERY block. So in addition to *M<sub>i</sub>* being dependent on *E(M<sub>i-1</sub>,K<sub>i-1,0</sub>)* due to CBC, so is now *K<sub>i</sub>* dependent on *K<sub>i-1,r</sub>* with *r* being the maximum number of extrapolated keys within a call of *E()*. This is handled within the feistel network class, as an instance lifecycle sees all blocks. Just in case you want to take a peek.
|
||||
* [I-don't-even-know-any-more] Inspired by Rijndael, it does some monkey tricks with reversible matrix-mutators after each feistel round.
|
||||
|
||||
### Password to key
|
||||
How does GCrypt transform a password to a key?..
|
||||
@ -124,8 +125,8 @@ Once you give the GHash instance a data block to digest, it will use the GCipher
|
||||
|
||||
The lastest *b* represents the current result of the hash function.
|
||||
|
||||
GHash also supports a do-it-all wrapper method that takes a Flexblock (A block of arbitrary length), and returns a hashsum for it.
|
||||
This wrapper function adds an additional block including the length of the input. This wrapper function is used to transform Passwords to Keys.
|
||||
GHash also supports a do-it-all wrapper method that takes a vector of blocks, and returns a hashsum for it.
|
||||
This wrapper function adds an additional block including the length of the input, if provided. This wrapper function is used to transform Passwords to Keys.
|
||||
|
||||
### GPrng...?
|
||||
Whilst we're at it, why not implement a pseudo-random number generator based on GHash aswell. So here it is, [GPrng](https://gitea.leonetienne.de/leonetienne/GCrypt/src/branch/master/GCryptLib/include/GCrypt/GPrng.h).
|
||||
|
Loading…
x
Reference in New Issue
Block a user