FISH (FIbonacci SHrinking) Stream Cipher designed by Blöcher and Dichtl (1993). Combines Lagged Fibonacci generators with shrinking generator principle for fast software implementation. Cryptographically broken by Ross Anderson.
| Property | Value |
|---|---|
| Category | Special Algorithms |
| Sub-category | Stream Cipher |
| Security status | ❌ Broken |
| Complexity | Intermediate |
| Inventor | Blöcher, Dichtl |
| Year | 1993 |
| Origin | 🇩🇪 Germany |
| Source | algorithms/special/fish.js |
| Parameter | Supported values |
|---|---|
| Key sizes | 4 bytes (32 bits) to 256 bytes (2048 bits) |
Status: ❌ Broken
| Issue | Description | Mitigation |
|---|---|---|
| Known Plaintext Attack | — | Ross Anderson demonstrated successful cryptanalysis with few thousand bits of known plaintext |
| Statistical Weaknesses | — | Lagged Fibonacci generators have inherent statistical weaknesses exploitable in cryptanalysis |
3 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — Basic keystream generation
| Field | Value |
|---|---|
key |
74657374 |
input |
48656c6c6f20576f726c64 |
expected |
ec865add438ba0a2fe556b |
Vector 2 — Empty input test
| Field | Value |
|---|---|
key |
746573746b6579 |
input |
(empty) |
expected |
(empty) |
Vector 3 — Single byte test
| Field | Value |
|---|---|
key |
6b657931 |
input |
41 |
expected |
fe |