PurrCrypt: elliptic curve encryption that meows at you
A fur-ociously secure encryption tool that encodes your secrets as adorable cat and dog sounds, using real elliptic curve cryptography with a playful disguise.
At a glance
- What is it?
- PurrCrypt is a Rust command line tool that encrypts files with secp256k1 key exchange and AES-GCM, then dresses the ciphertext in cat or dog noises so it does not look like encrypted data. The cryptography is conventional, the disguise is steganographic, and the project version is 0.1.0.
- Who is it for?
- PurrCrypt is a fun, small tool worth reading as a worked example of combining ordinary elliptic curve cryptography with a steganographic carrier, and its MIT licence makes the source reusable. It is not a replacement for a mature messaging or file encryption tool, and the disguise protects only against someone who does not know it is in use.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 86 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What PurrCrypt actually encrypts
PurrCrypt is a command line encryption tool written in Rust, and the README is emphatic about the point that matters: the cryptography is real. It uses the same elliptic curve algorithms as Bitcoin, specifically the secp256k1 curve, and the package description calls it a cat-and-dog-themed PGP-like encryption tool. The README insists in several places that the cuteness does not compromise the security.@@P@@The disguise is the second layer. Instead of shipping a file full of ciphertext, PurrCrypt encodes the encrypted bytes into sequences of pet noises, in a cat or a dog dialect, so that the file superficially resembles silly text rather than encrypted data. The README describes this as steganographic encoding and argues that it genuinely helps hide the fact that encrypted content is being sent, because a file of meows does not draw attention the way a blob of random bytes does.@@P@@The packaging tells you the shape of the implementation. The crate is version 0.1.0 on edition 2021, licensed MIT, and its dependency list is short and specific: k256 with the ecdh feature for elliptic curve Diffie-Hellman, elliptic-curve and rand_core and rand for key material, aes-gcm for authenticated encryption, base64 for encoding, flate2 for compression, regex for the pattern work, dirs for locating configuration directories, and serde with serde_json and toml for serialisation, plus thiserror for error types. The binary is named purr and lives in src/main.rs.@@P@@That dependency set is the most informative thing in the repository. A PGP-like tool that depends on k256 and aes-gcm is not rolling its own curves, and a tool that depends on aes-gcm is doing authenticated encryption rather than plain encryption with a separate integrity check.
Installing it: AUR packages or cargo
There are two documented routes. Arch Linux users can install it from the AUR, either the released package purrcrypt or the git-tracking package purrcrypt-git, using an AUR helper or the standard makepkg -si sequence.@@P@@Everyone else builds from source.@@P@@
git clone https://github.com/vxfemboy/purrcrypt.git
cd purrcrypt
cargo install --path .@@P@@The three commands are a clone, a directory change and a cargo install from the local path, which means the crate is compiled on the target machine rather than pulled as a binary. The result is a purr executable on the path. The repository is small, with a src directory and a Cargo.toml, so the build is quick.
The workflow: generate a key, import a key, encrypt, decrypt
The README walks through four steps before you send anything, and they are the ordinary key management steps with pet names attached.@@P@@A keypair is created under a name you choose, and the name is what you will use later as your identity.@@P@@
purr genkey fluffy@@P@@To receive messages from someone else you import their public key file, with the public flag telling the tool which half of the keypair is being added.@@P@@
purr import-key --public ~/Downloads/mr_whiskers_key.pub@@P@@Listing the keys you hold is a single command.@@P@@
purr list-keys@@P@@The dialect is set separately, because it is a property of the output rather than of the key, and it can be changed at any time.@@P@@
purr set-dialect cat@@P@@Encryption then names the recipient, the input file and the dialect, and the output lands next to the input with a .purr extension.@@P@@
purr encrypt --recipient mr_whiskers --input secret_catnip_stash_locations.pdf --dialect cat@@P@@Decryption is the mirror image, naming your key, the .purr file and the output path.@@P@@
purr decrypt --key fluffy --input suspicious_dog_noises.purr --output true_meaning_of_bork.txt@@P@@The README includes a warning about key handling that deserves repeating, because it is the one failure that destroys everything: if someone else gets your private key, they can read all your secret messages. The tool stores keys somewhere on disk and the README's advice is to protect them as carefully as you would anything else sensitive.
The command surface and its two levels of options
The full command reference is printed in the README, and it is small enough to take in at a glance.@@P@@
purr [COMMAND] [OPTIONS]
genkey [name] Create your pet's digital paw print
import-key [--public] <keyfile> Add a furry friend to your trusted circle
encrypt, -e Turn your boring text into pet speak
decrypt, -d Translate pet speak back to human
list-keys, -k See all the pets in your digital neighborhood@@P@@There are seven subcommands. genkey creates a keypair, import-key adds a friend's key, encrypt and decrypt do the work and have the short forms -e and -d, list-keys has the short form -k, set-dialect chooses between cat and dog, and verbose has the short form -v.@@P@@The options are grouped by command, and the grouping is the interesting part. The encrypt side takes the recipient key with -r or --recipient, the output path with -o or --output, the input path with -i or --input, and a --dialect switch for a one-off override of the stored default. The decrypt side takes your own key with -k or --key, and the same output and input flags. The asymmetry is minimal, which is what you want from a tool that has to be used correctly by someone in a hurry.
What the disguise hides and what it does not
The README itself is honest about the limits of the pet-speak layer, and its caution note is worth reading closely. The encoding hides the fact that you are sending encrypted content, but once someone knows you are using PurrCrypt, the README says they will recognise those suspiciously well-structured meows and woofs for what they really are. That is the correct characterisation. Steganography protects against passive, uninformed inspection; it does not protect against anyone who has read the same README.@@P@@So the security argument has two independent parts, and they are worth separating. The first part is that the payload is genuinely encrypted, with a key derived through secp256k1 elliptic curve Diffie-Hellman and the content protected with AES-GCM, which also authenticates it. That part does not depend on the theme at all. The second part is that the ciphertext is carried inside a text that looks like nonsense, which raises the cost of a casual inspection and makes the traffic less conspicuous on a channel where ciphertext would stand out.@@P@@The second part is a property of the transport situation, not of the cryptography. On a channel where encrypted-looking traffic is expected, the disguise adds nothing and the file is just longer. On a channel where it is not expected, it may help. Anyone relying on it should understand that it is camouflage rather than a second layer of protection, and that the camouflage is only as good as the assumption that nobody knows the scheme.
The wrong-tool case and the state of the project
The obvious wrong-tool case is a serious use. PurrCrypt is at version 0.1.0, it has no published releases in the repository history, and the README is written in a register that is explicitly about fun. Nothing in the documentation describes key rotation, revocation, forward secrecy, a web of trust, authenticated identities, or how the tool behaves when a key file is missing or corrupted. Those omissions are not necessarily flaws for a toy, but they are the difference between a tool you experiment with and one you store credentials in.@@P@@The second wrong-tool case is messaging. This encrypts files, one at a time, and produces a file you then have to send yourself through whatever channel you like. It does not talk to a key server, it does not discover recipients, and it does not establish a session. If the goal is to exchange secret messages with someone on an ongoing basis, a messaging tool with the key management built in does that job without you writing the plumbing.@@P@@The third is bulk data. The tool takes a file and produces a file, with compression in the dependency list, so large inputs are handled by the underlying library rather than by anything clever in the tool. There is no streaming mode, no directory handling and no manifest, so encrypting a folder means scripting around it yourself.@@P@@As a project, it is small, single-binary, MIT licensed and easy to read, and the last push was on 2026-07-29. The source is short enough that reading it is a reasonable way to understand how a steganographic carrier can be layered on top of ordinary authenticated encryption, which is arguably where its real value lies.
Editorial conclusion
PurrCrypt is a fun, small tool worth reading as a worked example of combining ordinary elliptic curve cryptography with a steganographic carrier, and its MIT licence makes the source reusable. It is not a replacement for a mature messaging or file encryption tool, and the disguise protects only against someone who does not know it is in use. Verify first that the recipient has your public key, that your private key file is protected as the README warns, and that the file extension and the noise pattern are not the only thing standing between an observer and the contents.
Frequently asked questions
Does PurrCrypt use real cryptography or is it a joke?
It uses real cryptography. The README states that PurrCrypt uses the same elliptic curve algorithms as Bitcoin, and the Cargo.toml depends on k256 with the ecdh feature plus aes-gcm for authenticated encryption. The cat and dog encoding is a steganographic carrier layered on top of that.
How do I install PurrCrypt?
On Arch Linux it is available from the AUR as purrcrypt or purrcrypt-git, installed with makepkg -si or an AUR helper. Otherwise clone the repository, enter the directory and run `cargo install --path .`, which produces the purr executable.
Which commands does the purr command line provide?
genkey, import-key, encrypt with the short form -e, decrypt with -d, list-keys with -k, set-dialect for cat or dog, and verbose with -v. Encrypt takes a recipient, input and output plus a dialect override, and decrypt takes your key, the input and the output path.
What file does the encrypt command produce?
The encrypted file is written next to the input with a .purr extension, and its contents are the encrypted payload encoded as cat or dog noises rather than as raw ciphertext.
What does the steganographic encoding actually hide?
It hides the fact that the content is encrypted. The README warns that once someone knows you are using PurrCrypt they will recognise the structured meows and woofs, so the disguise protects against uninformed inspection rather than against an informed observer.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/vxfemboy-purrcrypt)Was this useful?