Added another visualization to readme
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 938 B |
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 938 B |
BIN
GCryptLib/visualizations/input-extreme-flip.bmp.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
GCryptLib/visualizations/input-extreme-key.bmp.png
Normal file
After Width: | Height: | Size: 308 B |
BIN
GCryptLib/visualizations/input-extreme.bmp.png
Normal file
After Width: | Height: | Size: 327 B |
BIN
GCryptLib/visualizations/input-extreme.gif
Normal file
After Width: | Height: | Size: 813 B |
Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 355 B |
Before Width: | Height: | Size: 358 B After Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
GCryptLib/visualizations/output-extreme-flip.bmp.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
GCryptLib/visualizations/output-extreme.bmp.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
GCryptLib/visualizations/output-extreme.gif
Normal file
After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 442 B |
Before Width: | Height: | Size: 443 B After Width: | Height: | Size: 443 B |
18
readme.md
@ -128,6 +128,7 @@ The xor operation ensures that an observer will never know the internal state of
|
|||||||
future output.
|
future output.
|
||||||
|
|
||||||
### Speaking of... Visualizations!
|
### Speaking of... Visualizations!
|
||||||
|
#### Single-block diffusion
|
||||||
`"Hello :3"` in binary, and it's ciphertext:
|
`"Hello :3"` in binary, and it's ciphertext:
|
||||||
|
|
||||||

|

|
||||||
@ -135,7 +136,7 @@ future output.
|
|||||||

|

|
||||||
|
|
||||||
|
|
||||||
Now, let's flip a single bit in the input:
|
Now, let's flip than a single bit in the input:
|
||||||
|
|
||||||
One bit flipped, and again the corresponding ciphertext:
|
One bit flipped, and again the corresponding ciphertext:
|
||||||

|

|
||||||
@ -148,7 +149,7 @@ Let's gif them together, to better see the difference:
|
|||||||

|

|
||||||
|
|
||||||
|
|
||||||
What about input longer a single block?
|
#### What about input longer a single block?
|
||||||
|
|
||||||
Input, and ciphertext:
|
Input, and ciphertext:
|
||||||

|

|
||||||
@ -157,6 +158,19 @@ Input, and ciphertext:
|
|||||||
|
|
||||||
Notice how the ciphertext doesn't change until the block containing the bitflip is reached. This is a limitation of cipher block chaining.
|
Notice how the ciphertext doesn't change until the block containing the bitflip is reached. This is a limitation of cipher block chaining.
|
||||||
|
|
||||||
|
### What about extreme inputs?
|
||||||
|
How non-transparent is the cipher with extreme inputs? Even with a super problematic key?:
|
||||||
|
|
||||||
|
Input, key, and ciphertext:
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Notice how even cleartexts that are almost completely uniform, with a key that is just zeores, will produce ambiguous ciphertexts.
|
||||||
|
I darkened the input gif, as to not cause disorientation by flickering.
|
||||||
|
|
||||||
## Noteworthy:
|
## Noteworthy:
|
||||||
* This is no fixed algorithm. Newer versions may very well be unable to decrypt ciphertexts encrypted with earlier versions.
|
* This is no fixed algorithm. Newer versions may very well be unable to decrypt ciphertexts encrypted with earlier versions.
|
||||||
|
|
||||||
|