Byte-level work, without the upload theatre
Search for any single one of these — “sha256 generator”, “hmac generator”, “aes encrypt online”, “totp generator” — and you get a page per verb, each with its own single input box. They are mostly fine, and they mostly run in the browser too. What is missing is everything around the conversion: batching, the equivalent command line, an honest password-strength verdict, and a decrypt path for whatever the encrypt box produced.
So this page is the companion to the encode/decode toolbox, focused on the operations that need bytes rather than characters:
- Digests in batch, with HMAC. One value per line, one digest per line, per-line errors — plus HMAC-SHA-1/256/384/512 with a key you paste. MD5, SHA-1 and CRC32 are included because they still show up in checksum files and legacy formats, with a note that they are not collision-resistant.
- File hashing that streams. MD5, SHA-1, SHA-256 and CRC32 are computed incrementally: the file is read in 1 MB chunks and never held in memory, so a 4 GB image hashes the same way a 4 KB one does, with live progress. SHA-384/512 use Web Crypto and therefore do read the file in — the page says which is which instead of pretending.
- Encryption with a decrypt path. AES-256-GCM with a PBKDF2-SHA-256 password (100k/210k/600k iterations) produces a self-describing string — version, algorithm, iterations, salt, IV, ciphertext — plus Node and browser snippets that decrypt it. AES-CBC is available with a visible warning that it has no authentication tag.
- Ratings that admit what they are. The password generator reports entropy in bits and the time to crack it under two attacker models (an online service and an offline GPU cluster) — no colourful “strong/weak” meter pretending to be a guarantee. TOTP is verified against RFC 6238 vectors, and the page shows the remaining seconds plus a window-tolerant verify box.
Everything is local: hashing, HMAC, PBKDF2, AES and TOTP all run in your tab through Web Crypto and the browser’s own primitives, and the secrets you type never cross the network — which is the whole point for a page whose inputs are keys and tokens. Two honest limits: this is not a password manager (a generated password is only as safe as where you put it), and it deliberately does not implement certificate parsing, argon2 or ChaCha20-Poly1305 — inventing cryptography is not a feature, so the primitives that are here come from the platform.