From 1436166d82251f5b7b8e65bc49e08c8b6afe6646 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Sat, 12 Sep 2026 17:47:37 -0700 Subject: [PATCH] docs: add screenshots, move encryption to docs/cipher.md, and update readme --- docs/cipher.md | 10 ++++++++++ docs/onscreen.png | Bin 0 -> 7762 bytes docs/ui.png | Bin 0 -> 14242 bytes readme.md | 18 ++++++++---------- 4 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 docs/cipher.md create mode 100644 docs/onscreen.png create mode 100644 docs/ui.png diff --git a/docs/cipher.md b/docs/cipher.md new file mode 100644 index 0000000..6e88358 --- /dev/null +++ b/docs/cipher.md @@ -0,0 +1,10 @@ +# Encryption + +### PLAIN +No encryption. Encodes text directly. + +### SPECK32/64 ECB +Block cipher in ECB mode. Each character is encrypted independently — identical plaintext characters produce identical ciphertext. Useful when you want varied-looking output from the same input, but **not secure under real threat models** since patterns in the plaintext leak through. + +### SPECK48/96 CTR +Stream cipher mode with a random 24-bit nonce prepended to the output. Identical plaintexts produce different ciphertexts each time. Significantly more secure than ECB. **Rotate your password after roughly every 100 encryptions** to avoid nonce reuse risk within the 24-bit space. diff --git a/docs/onscreen.png b/docs/onscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..d67de4b172acad7d67e1d284a5cefbbe778a2d1e GIT binary patch literal 7762 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 R6Ws>}yi$Ix1Xr+(_&@WE*IEDo literal 0 HcmV?d00001 diff --git a/docs/ui.png b/docs/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..e98fe23799d6e1006c4a71b8a796757ea065882d GIT binary patch literal 14242 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

jm} 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 SW{~O8vFK?VX~8v~M*J^W5ZOBb literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md index 0f12fb5..aa9136e 100644 --- a/readme.md +++ b/readme.md @@ -8,17 +8,13 @@ --- +

+ inØsight on-screen detection +

-## Encryption - -### PLAIN -No encryption. Encodes text directly. - -### SPECK32/64 ECB -Block cipher in ECB mode. Each character is encrypted independently — identical plaintext characters produce identical ciphertext. Useful when you want varied-looking output from the same input, but **not secure under real threat models** since patterns in the plaintext leak through. - -### SPECK48/96 CTR -Stream cipher mode with a random 24-bit nonce prepended to the output. Identical plaintexts produce different ciphertexts each time. Significantly more secure than ECB. **Rotate your password after roughly every 100 encryptions** to avoid nonce reuse risk within the 24-bit space. +

+ inØsight user interface +

## How ZWUS Works @@ -29,6 +25,8 @@ Stream cipher mode with a random 24-bit nonce prepended to the output. Identical The result is a string of invisible Unicode that carries the full original text. Decoding reverses the mapping: split on the separator, look up each zero-width character to recover the digit, parse the base-N number back to a code point, and reconstruct the string. +For cipher details, see [docs/cipher.md](docs/cipher.md). + ## Use ZWUS in Your Own Projects The encoder/decoder is available as a standalone package for multiple languages: