Fast LZ77 coder by Ilya Muravyov. Every token carries a single tag bit; matches add an Elias-gamma coded length and a fixed 16-bit offset. The parse is a backward dynamic program over the gamma cost brackets rather than a greedy longest-match choice.
| Property | Value |
|---|---|
| Category | Compression Algorithms |
| Sub-category | Dictionary (LZ77) |
| Security status | Not classified |
| Complexity | Intermediate |
| Inventor | Ilya Muravyov |
| Year | 2010 |
| Origin | 🇷🇺 Russia |
| Source | algorithms/compression/crush.js |
Status: not classified — treat as unverified.
No vulnerabilities are recorded for this implementation.
6 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — Empty input - header only
| Field | Value |
|---|---|
input |
(empty) |
expected |
00000000 |
Vector 2 — Single byte literal
| Field | Value |
|---|---|
input |
41 |
expected |
010000002080 |
Vector 3 — Run of one byte - literal then an overlapping match
| Field | Value |
|---|---|
input |
41414141414141414141 |
expected |
0a00000020ce0000 |
Vector 4 — Alternating pattern
| Field | Value |
|---|---|
input |
41424142 |
expected |
040000002090882420 |
Vector 5 — Repeating sequence
| Field | Value |
|---|---|
input |
414243414243414243414243 |
expected |
0c00000020908873800100 |
Vector 6 — Natural text without repeats
| Field | Value |
|---|---|
input |
48656c6c6f20576f726c64 |
expected |
0b00000024194d86c37880ae6f391b0c80 |