mrkeyoor.com_
Fri 04 Sept 06:41 UTC
Dev Toolsevaluationupdated 04 Sept 2026

Ciphey review

Ciphey is a Rust command-line tool and library that tries to turn unknown encoded or classically encrypted text into readable output. It searches through decoders, checks candidate text, and reports the path it used, saving the trial-and-error work common in capture-the-flag puzzles and data triage.

Verdict

Our Ciphey run installed 335 packages, built in 89 seconds, and passed all 612 tests in 150 seconds, making v0.12.1 a credible CTF and decoding assistant. Use it to generate and rank plausible decoding paths, then verify the result yourself. Skip it for known password hashes, known RSA weaknesses, or production library work that cannot accept a pre-1.0 API and local plaintext caching.

We ran it

Lab card: what happened when we ran CipheyScreenshot of Ciphey (github.com/bee-san/Ciphey)
Install✓ · 31s335 packages
Build✓ · 89s
Tests✓ · 150s612 passed · 0 failed of 612 (cargo test)
Repo152 files~13,945 lines of source · 1.1 MB · 8 CI workflows · Dockerfile · tests dir

Answers from our run

Does Ciphey build from source?

Dependencies installed in 31 seconds (335 packages), and the build succeeded in 89 seconds. We cloned commit e426bca into a clean Debian container with 3 CPUs and no project-specific setup.

Do Ciphey's tests pass?

Yes: 612 of 612 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use Ciphey?

Teams requiring a stable 1.x library API: the current Rust release is v0.12.1.

What are the alternatives to Ciphey?

CyberChef, Hashcat, RsaCtfTool. Our Ciphey run installed 335 packages, built in 89 seconds, and passed all 612 tests in 150 seconds, making v0.

Setup4/5Cargo install is simple; 335 packages and first-run setup add weight
Docs3/5Good technical notes, but the main docs index has broken links
Community4/521,588 stars with a September push and no open issue queue
Maturity4/5612 tests passed, though the Rust line remains at v0.12.1

Who it’s for

CTF players who want an automatic first pass backed by 612 tests that passed in our run.
Security students learning how layered encodings and classical ciphers can be unwound.
Developers who want a Rust library that returns decoded text and the decoder path.
Analysts who can confirm candidate plaintext instead of treating the first plausible result as proof.

Who it’s NOT for

Teams requiring a stable 1.x library API: the current Rust release is v0.12.1.
Analysts who already know the cipher and need a deterministic specialist tool: Ciphey uses search, heuristics, plaintext checkers, and a default 5-second cutoff.
Headless services that cannot accommodate first-run interaction or local state without extra work: the CLI creates config and SQLite files under ~/.ciphey, and human checking needs to be disabled explicitly.
Users expecting the optional enhanced detector to stay tiny and account-free: the README says it needs a one-time 500 MB model download and a free Hugging Face account.
Teams with strict base-image or documentation-link policies: the Dockerfile pins Alpine 3.12, and several primary links in the docs index return 404.

Setup reality

Our sandbox installed 335 packages in 31 seconds. The Rust build succeeded in 89 seconds, then cargo test finished in 150 seconds with 612 passed and 0 failed out of 612 at commit e426bca.

The shortest documented path is cargo install ciphey; the repository also includes a multi-stage Dockerfile. First use writes configuration under ~/.ciphey, while successful results and human review data can be cached in a local SQLite database.

The optional enhanced plaintext detector needs a 500 MB model and a free Hugging Face account. The 1.1 MB checkout had 152 files, about 13,945 source lines, 8 CI workflows, a Dockerfile, and a tests directory.

Version 0.12.1 automates the first decoding pass

Ciphey v0.12.1 takes text or a file and searches for a path to plausible plaintext. The Rust source has handlers for Base32, Base58 variants, Base64, Base91, Base65536, binary, hexadecimal, URL encoding, Morse, Braille, Caesar, Vigenere, Atbash, ROT47, rail fence, and Brainfuck. That mix suits CTF challenges, suspicious snippets, and nested encodings where the analyst does not know which operation came first.

The program uses A* search, decoder costs, pruning, and cached results. Its plaintext checkers draw on English statistics, regular expressions, wordlists, password data, and LemmeKnow classifications. Ciphey can return several candidates, accept a regex crib, or ask whether a candidate is meaningful. A readable result still needs confirmation against the source, expected format, and problem context.

A 5-second cutoff favors quick answers over exhaustive work

The CLI defaults to a 5-second cracking timeout, which users can change. --top-results keeps several possible plaintexts and turns off the human checker. --disable-human-checker matters for scripts, while --regex supplies known plaintext and --wordlist loads exact candidates. The timeout keeps an uncertain search bounded, though difficult or poorly classified input may stop without the answer an analyst hoped to see.

The library accepts text plus a Config and returns decoded text with the decoder sequence. An analyst can replay that path in another tool. Ciphey also stores successful results in SQLite. The cache records encoded text, decoded text, decoder path, and execution time, so sensitive inputs persist on disk unless the operator manages ~/.ciphey/database.sqlite.

What happened when we ran it

Our sandbox installed 335 packages in 31 seconds. The build completed in 89 seconds in an unprivileged container with 3 CPUs and 12 GB of RAM. The checked-out commit was e426bca, and the repository occupied 1.1 MB before the installed Rust packages. Nothing in the supplied install or build result failed.

cargo test ran for 150 seconds and reported 612 passed with 0 failed out of 612. The result establishes that the checked-out suite passed in the stated container. The lab did not measure decoding throughput, compare Ciphey with another tool, or test first-candidate quality on an outside corpus.

The checkout contained 152 files and about 13,945 lines of source. It had 8 CI workflow files, a Dockerfile, and a tests directory. Those signals match the passing suite. The quickstart workflow still declares a 3-OS matrix while setting its runner to Ubuntu for every matrix entry, so that file does not provide three-platform test coverage.

A 500 MB detector is optional, while local caching is standard

Enhanced plaintext detection uses a BERT-based model that the README sizes at 500 MB. Enabling it requires a one-time download and a free Hugging Face account. The security documentation says the token is used for download and is not written to disk. Isolated networks can leave the feature off and use the built-in checkers, accepting a different candidate-ranking path.

Ciphey creates ~/.ciphey/config.toml and ~/.ciphey/database.sqlite; optional models live under ~/.ciphey/models/. Its first-run wizard asks about display, result handling, timeout, wordlists, and enhanced detection. A service wrapper should create a known configuration, disable human prompts, decide whether cached plaintext may persist, and restrict file permissions on that directory.

Version 0.12.1 fixed an untrusted-input hang

The v0.12.1 release caps Brainfuck interpretation at 1,000,000 executed instructions. A non-terminating program now reaches the decoder's error path instead of hanging Ciphey. The release also restored exact rand 0.8 and half 2.3.1 pins after newer dependencies broke cross-platform builds. Both fixes matter for a tool that accepts strange input and publishes binaries for several operating systems.

Eight workflows do not repair the broken docs index

GitHub showed 21,588 stars, a last push on September 1, 2026, and 0 open issues and pull requests. Release v0.12.1 arrived one day earlier, followed by fixes to release runners and the Windows checksum. That is current maintenance backed by closed pull requests. The empty queue says little about future response, and the Rust package remains below 1.0.

Documentation quality is mixed. The README gives a Cargo command, Docker route, features, timeout, and optional-model requirements. Deeper notes cover A* search, plaintext detection, storage, and security. Yet the docs index links to ciphey_overview.md, using_ciphey.md, and ciphey_architecture.md, and all 3 paths return 404 at commit e426bca. The Dockerfile also pins its runtime stage to Alpine 3.12.

The 612-test result earns a trial, not blind trust

Ciphey belongs before a specialist tool. Give the 5-second search an unfamiliar string, inspect the proposed transformations, and confirm the output. Reach for CyberChef when you want to build the recipe by hand, Hashcat for a known password-hash mode, or RsaCtfTool for weak RSA. That division avoids asking one automatic decoder to solve every cryptographic problem implied by the repository tagline.

The 612-test suite, recent security fix, MIT license, and library interface make Ciphey a sound CTF and exploratory-decoding choice. Its pre-1.0 version, local cache, first-run interaction, optional account-backed model, broken documentation links, and Alpine 3.12 image need explicit handling in repeatable workflows. Record the decoder path and verify the plaintext outside Ciphey before acting on it.

Alternatives

ProjectWhat it isPick it when
CyberChefA browser recipe tool, compared with Ciphey v0.12.1's automatic search.pick this instead when you want to see and control every transformation in a visual pipeline.
Hashcat gh↗A password-recovery tool built around known hash modes and accelerated cracking.pick this instead when the input is a known password hash and GPU cracking is the job.
RsaCtfToolA focused collection of attacks for weak RSA keys and CTF ciphertext.pick this instead when the problem is specifically RSA and you need attack-specific diagnostics.

What people are saying

  1. [velocity-scout] bee-san/Ciphey

Sources

  1. Ciphey repository
  2. Ciphey v0.12.1 release
  3. Rust package manifest
  4. Ciphey CLI options
  5. Ciphey security policy
  6. Ciphey threat model
  7. Ciphey documentation index
  8. Ciphey Dockerfile

More dev tools reviews

TranslucentTB · reactjs-interview-questions · micropython · Rectangle · system-design-101 · HandBrake · the whole board →