Add ZWUS-7 support and default encoding

This commit is contained in:
2026-09-16 16:50:56 -07:00
parent 72a4aa8212
commit 5a5da69db2
5 changed files with 99 additions and 54 deletions

View File

@@ -4,7 +4,7 @@ Zero Width Unicode Steganography — hide text inside invisible characters.
```toml
[dependencies]
zwus = "0.2"
zwus = "0.3"
```
## Usage
@@ -25,14 +25,14 @@ assert_eq!(decoded, vec![72, 101, 108]);
### Base
Higher base = shorter output, but more likely visible in some renderers.
Base 7 ranks printable ASCII so common English characters use one or two digits. Base 6 keeps Unicode code points as numbers. Some platforms strip particular zero-width characters.
```rust
use zwus::Zwus;
Zwus::encode_string_with_base("hi", 3); // safest
Zwus::encode_string_with_base("hi", 6); // default, compact
Zwus::encode_string_with_base("hi", 8); // most compact
Zwus::encode_string_with_base("hi", 6); // code point encoding
Zwus::encode_string_with_base("hi", 7); // default, compact for ordinary English text
```
Decode must match the encode base:
@@ -44,6 +44,8 @@ let encoded = Zwus::encode_string_with_base("hi", 6);
Zwus::decode_to_string_with_base(&encoded, 6);
```
Number arrays use ordinary base digits in every standard. Base 7's frequency ranking applies only to strings. Decoding ignores visible text mixed into a payload.
### Embedded in visible text
Non-ZWUS characters are automatically ignored during decoding, so hidden payloads survive being mixed into normal text.